CAShapeLayer抵消了UIVIew的CALayer

时间:2016-09-02 01:50:45

标签: uiview

我正在尝试将一个CAShapeLayer添加到一个自定义的UIViews图层,这个图表进展顺利,除了它自己偏移的事实......

我最好用代码和截图解释..所以在这里:

我想要实现的只是一个简单的“斜线”,如Swift 3中的CAShapeLayer。

在我自定义的UIView中:

    var slashLayer: CAShapeLayer?
var slashPath: CGPath?

override func layoutSublayers(of layer: CALayer) {
    if layer == self.layer {
        if slashLayer == nil {
            slashLayer = CAShapeLayer()
            slashLayer?.bounds = layer.bounds
            slashLayer?.strokeColor = UIColor.black.cgColor
            slashLayer?.fillColor = UIColor.black.cgColor
            slashLayer?.lineWidth = 3.0

            let slashPath = UIBezierPath()
            slashPath.move(to: CGPoint(x: layer.frame.minX, y: layer.frame.minY))
            slashPath.addLine(to: CGPoint(x: layer.frame.maxX, y: layer.frame.maxY))
            slashPath.close()

            slashLayer?.path = slashPath.cgPath

            layer.addSublayer(slashLayer!)
        }
    }
}

这就是UIView的子类。

这就是我在Interface Builder(以及我启动它时的应用程序)中的结果。

由于CALayer.layoutManager不再存在,如何让各层保持一致?

Screenshot of the Custom UIView in Interface Builder - Shot 1 Screenshot of the Custom UIView in Interface Builder - Shot 2

0 个答案:

没有答案