我是CoreGraphics的新手。我正在尝试创建视图,其中包含以滚动视图方式添加的两个UIImageview。添加后我想连接两个中心线。我使用bezier路径以及CAShapelayer。但是在UIImageview上画线也是如此,所以我想删除UIImageview上方的行或者将行发送回UIImageview。我已经完成了下面的代码。
let path: UIBezierPath = UIBezierPath()
path.moveToPoint(CGPointMake(personalProfile.center.x, personalProfile.center.y))
path.addLineToPoint(CGPointMake(vwTwo.center.x, vwTwo.center.y))
let shapeLayer: CAShapeLayer = CAShapeLayer()
shapeLayer.path = path.CGPath
shapeLayer.strokeColor = UIColor.blueColor().CGColor
shapeLayer.lineWidth = 3.0
shapeLayer.fillColor = UIColor.clearColor().CGColor
self.scrollView.layer.addSublayer(shapeLayer)
还请检查截图,我想删除蓝线的红色标记部分。
答案 0 :(得分:1)
zPosition
shapeLayer
即可
这将允许在两个视图下方绘制图层(并且比尝试计算线的新起点和终点要容易得多)。如果你look at the documentation for zPosition
:
此属性的默认值为0.更改此属性的值会更改屏幕上图层的前后排序。较高的值使该层在视觉上比具有较低值的层更靠近观察者。这会影响框架矩形重叠的图层的可见性。
因此,由于默认为0,而UIViews
只是CALayers
的包装,因此您可以在-1
上使用shapeLayer
的值来获取它在你的其他观点背后。
例如:
shapeLayer.zPosition = -1
大部分时间在Swift中,您在定义变量时不需要显式提供类型。你可以让Swift推断它。例如:
let path = UIBezierPath()
答案 1 :(得分:0)
我会看到两个选项,一个简单而且更难的选择。
UIImageView
移到前面,有效地隐藏了UIImageView
后面的一行。