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

时间:2015-11-05 07:17:36

标签: ios swift graphics calayer

我有UIView。我在UIView中画了一些东西。我在CALayer添加了UIView。现在我希望我的控制器只重绘我添加的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();

2 个答案:

答案 0 :(得分:1)

你可以打电话

self.view.displayLayer(myshapelayer)
来自ViewController的

答案 1 :(得分:-1)

有两种方式。

首先,您制作代理协议并通过ViewController更改CALayer

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

获取{{1}}个对象

希望它可以帮到你。