2013-04-22 74 views
2

我是CG绘图的新手,我对CG代码的去向感到困惑。在UIView和UIViewController上绘图

什么是停止将绘图函数放在UIViewController与UIView的想法?我应该如何确定CG代码的哪些部分应该到哪里?我看到一些教程在视图控制器的viewDidLoad中有代码,但其他人则说它在视图中。什么决定什么去哪里?

(是的,这是种MVC问题的,但是我仍然有麻烦区分。)

回答

3

自定义绘制代码的正确位置应该是(几乎总是)在UIView子类的drawRect方法。通常的做法是制作UIView的自定义子类,并将其作为视图控制器的根视图。例如,在视图控制器的loadView方法中,您可以指定self.view = [[MyCustomView alloc] init];(如果您使用的是非ARC代码,则自动释放该视图!)然后,您的自定义绘图代码应该使用drawRect方法MyCustomView

0

核心图形绘制代码可以去任何有效的上下文。这意味着如果您创建自己的上下文,它可以在您自己的功能中使用。

您通常将Core Graphics绘图代码放置在UIView子类中的原因通常是您可能希望将代码封装为可重用的形式。但是,如果您要从Core Graphics代码创建图像,您可以轻松开始一个新的图像上下文,然后绘制,然后将上下文的内容保存到UIImage中。这种类型的绘图可以到任何地方,甚至是UIViewController。核心图形绘图甚至可以用来生成PDF。它只是一个简单的几何图形框架。只要你有一个有效的上下文,就可以在你创建的UIView或上下文中调用drawRect:之前创建的上下文。