2013-04-22 78 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:之前創建的上下文。