我是CG绘图的新手,我对CG代码的去向感到困惑。
什么阻止了将绘制函数放在UIViewController和UIView中的想法?我该如何确定CG代码的哪些部分应该去哪里?我看到一些教程在视图控制器的viewDidLoad中有代码,但是其他人说它在视图中。什么决定了什么在哪里?
(是的,这是一个MVC问题,但我仍然难以区分。)
答案 0 :(得分:3)
自定义绘图代码的正确位置(几乎总是)在drawRect
子类的UIView
方法中。通常的方法是创建UIView的自定义子类,并使其成为视图控制器的根视图。例如,在视图控制器的loadView
方法中,您可以指定self.view = [[MyCustomView alloc] init];
(如果您使用非ARC代码,则自动发布该视图!)然后您的自定义绘图代码应该放在{{1}中} drawRect
的方法。
答案 1 :(得分:0)
Core Graphics绘图代码可以放在有效上下文的地方。这意味着如果您创建自己的上下文,它可以进入您自己的函数。
您通常将Core Graphics绘图代码放在UIView子类中的原因通常是您可能希望以可重用的形式封装代码。但是如果您要从Core Graphics代码创建图像,您可以轻松地启动新的图像上下文,绘制,然后将上下文的内容保存到UIImage中。这种类型的绘图可以去任何地方,甚至是UIViewController。核心图形绘制甚至可以用于生成PDF。它只是一个简单的几何绘图框架。只要你有一个有效的上下文,就可以在UIView或你在命令中创建的上下文中调用drawRect:
之前创建的上下文。