行具有取决于水平位置
我画的垂直线的网格的CALayer不同宽度上使用的CALayer行具有取决于水平位置
let linePath = CGMutablePath()
linePath.addRect(CGRect(x: xPos, y: 0, width: 1.0, height: self.frame.size.height))
let lineLayer = CAShapeLayer()
lineLayer.path = linePath
lineLayer.lineWidth = 0.5
lineLayer.strokeColor = UIColor.black.cgColor
lineLayer.fillColor = UIColor.black.cgColor
self.layer.addSublayer(lineLayer)
一个UIImage拉伸(这实际上是在一个循环中,与XPOS在循环增加)。 ..一些线条显得比其他线条明显更厚。还有 - 当我把图像放在UIScrollView中时,每行都会闪烁 - 当某些偏移量(滚动视图水平滚动时),它们变得明显更薄
我试过了较粗的lineWidth和矩形宽度的各种组合 - 但没有似乎帮助......很难想象为什么这些会导致取决于生产线的位置差...
我也试着调整contentMode按Lines drawn with core graphics that are set to the same width sometimes vary in size when drawn
我也试过保证所有计算我们CGFloat - 根据另一个SO帖子(抱歉,我找不到那个ag AIN)
无论是帮助
SUBQUESTION - 有没有办法拉拢CA一条线吗? - 或者是使用一个薄矩形的技术,我正在使用最好的方法来做到这一点?
你的代码对我来说正常工作正常的UIView。我想有些线条更细,因为更粗的线条被拉伸了两倍多。尝试检查和添加新的之前删除先前添加层,看看是否能解决问题:
let lineLayer = CAShapeLayer()
//......
lineLayer.name = "VerticalLineLayer"
if let proviousLayerIndex = self.layer.sublayers?.index(where: { (layer) -> Bool in
return layer.name == "VerticalLineLayer"
}) {
self.layer.sublayers?.remove(at: proviousLayerIndex)
}
self.layer.addSublayer(lineLayer)
谢谢云 - 抱歉应该包含该循环逻辑 - 它不会添加行两次。然而,我刚刚在一台物理设备上尝试过它,它看起来很好 - 这似乎是模拟器的工件 –
@JonCook,很好的发现! –
原来是模拟器的假象。我刚刚在一台物理设备上试过了,它看起来很好
其实@Yun CHEN - 它有点微妙 - 我刚刚在不同的模拟器上尝试过 - 这似乎是任何PLUS手机的问题 - 所以它似乎是一个屏幕分辨率问题(我注意到这里: https://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions,PLUS手机渲染为3x,而另一些渲染为2x。我无法在物理设备上进行测试,没有加上工作 –
提供循环代码 –