根据水平位置,用Calayer绘制的线不同



我正在使用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)

最新更新