我正在使用CALayer
在UIImage上绘制一条垂直线网格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)
(这实际上处于循环中,xPos在循环中增加)...某些行显得比其他行明显更厚。 另外 - 当我将图像放在UIScrollView中时,每一行都会闪烁 - 当它们处于某些偏移时(滚动视图水平滚动),它们会变得明显变薄。
我尝试了较粗的lineWidth和矩形宽度的各种组合 - 但似乎没有任何帮助......很难想象为什么这些会导致差异,具体取决于线的位置......
我也尝试按照Lines drawn with core graphics that are set to the same width sometimes vary in size when drawn调整 contentMode
我也试过确保所有计算我们CGFloat - 按照另一个SO帖子(抱歉,我再也找不到)
都没有帮助
SUBQUESTION - 有没有办法在CA中绘制LINE? - 或者是使用薄矩形的技术,我采用最好的方法来做到这一点?
答案 0 :(得分:0)
使用正常的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)
答案 1 :(得分:0)
原来是模拟器的人工制品。我刚刚在物理设备上试用了它看起来很好