删除视图上绘制的线条

时间:2016-04-21 11:47:14

标签: ios swift2 core-graphics

我是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)   

还请检查截图,我想删除蓝线的红色标记部分。

enter image description here

2 个答案:

答案 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)

我会看到两个选项,一个简单而且更难的选择。

  1. 绘制线条后将UIImageView移到前面,有效地隐藏了UIImageView后面的一行。
  2. 计算您希望线条开始和结束的点,并从这些点而不是中心绘制一条线。