iPhone需要为子视图获取CGContextRef上下文引用

时间:2009-05-25 04:14:19

标签: iphone cocoa-touch

我正在使用IBoutlet来获取对我在界面构建器中添加到主视图的子视图的引用,但由于这不能让我访问drawRect:我将无法获取上下文借鉴。无论如何我仍然可以得到图形上下文,所以我可以在子视图上绘制?我该怎么做?

3 个答案:

答案 0 :(得分:3)

你不能那样画;你必须绘制以响应drawRect调用,而不是像某些框架所允许的那样。

正确的方法是:在Xcode中创建一个UIView子类。切换到Interface Builder,选择您的子视图,并将其“Class Identity”(在“Tools> Identity Inspector”下)更改为新子类的名称。

然后在您的子类中,您可以实现drawRect

答案 1 :(得分:2)

从技术上讲,有一种方法可以通过view.layer.delegate路由使一个对象成为另一个对象的绘图委托。可以构建一个委托来实现

  • (void)drawLayer:(CALayer *)图层inContext:(CGContextRef)ctx

这使您能够在必要时重复使用绘图指令。但是,阅读和理解另一个程序员可能会很乏味。大多数人会避免它,除非它消除了代码重复。

答案 2 :(得分:0)

你永远不应该在另一个视图中绘图,甚至不是子视图。子视图应该绘制自己,并且它可以访问自己的图形上下文。您无法访问其他视图的上下文;它们由框架处理,并在调用-drawRect:之前设置适当的视图。