我正在使用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)
(这实际上是在循环中,XPO在循环中的增加)...某些线似乎比其他线更厚。另外 - 当我将图像放入UISCrollView每行闪烁时 - 在某些偏移上时它们会变得明显变薄(滚动视图水平滚动)
我尝试了各种较厚的线宽和矩形宽度的组合 - 但是似乎没有帮助...很难想象为什么这些会根据线路的位置引起差异...
我还尝试根据使用核心图形绘制的行调整 contentMode ,这些图形设置为相同的宽度有时在绘制
时的尺寸有所不同我还尝试确保所有计算我们的cgfloat-根据另一个帖子(对不起,我再也找不到它)
既没有帮助
次级问题 - 有没有办法在CA中绘制一条线? - 或者使用薄矩形的技术是我使用的最佳方法?
原来是模拟器的人工制品。我刚刚在物理设备上尝试了一下,看起来不错
您的代码使用普通的Uiview对我来说很好。我猜有些线条更薄,因为提es线的绘制超过两次。尝试在添加新图层之前先检查并删除先前添加的图层,并查看是否解决了问题:
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)