如何只重绘一个特定的图层? (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
我有我的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