在UIView vs UIViewController上绘图

时间:2013-04-22 23:50:11

标签: ios objective-c xcode

我是CG绘图的新手,我对CG代码的去向感到困惑。

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

(是的,这是一个MVC问题,但我仍然难以区分。)

2 个答案:

答案 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:之前创建的上下文。