如何只重绘一个特定的图层? (IOS,SWIFT)

how to redraw only one specific layer ? (IOS,SWIFT)

我有我的UIView。我在 UIView 中画了一些东西。我在 UIView 中添加了一个 CALayer。现在我希望我的控制器只重绘我添加的 CALayer。

我该怎么做?

在我的实际代码中,它将重绘主视图。如何重绘我的子视图 (myshapelayer)?

     override func drawRect(rect: CGRect) {

            var myshapelayer:CAShapeLayer=CAShapeLayer();
            var testbezier:UIBezierPath=UIBezierPath();
            testbezier.moveToPoint(CGPoint(x: 60, y: 80));
            ...
    ...

            myshapelayer.strokeColor=UIColor.blueColor().CGColor;
            myshapelayer.path=testbezier.CGPath;
            newlayer.addSublayer(myshapelayer)

<draw on my main view>

控制器:

myview.setNeedsDisplay();

有两种方法。

首先,您制定委托协议并传递您的 CALayer 以在 ViewController

中进行更改

其次,使用self.view.subviews可以获得CALayer 如果 CALayer 的索引为 1,则可以通过 self.view.subviews[1] as? CALayer

获得 CALayer 对象

希望对您有所帮助。

你可以打电话给

self.view.displayLayer(myshapelayer)

来自 ViewController