2010-02-26 20 views
4

在Iphone開發中,我想在圖層中繪製上下文。 然後問題是:什麼是傳遞給drawLayer的上下文:inContext:?

傳遞到drawLayer的上下文究竟是什麼:inContext:?它是圖層的內容的上下文還是UIview的上下文?

如果這是UIView的上下文,它是哪個UIView?

在此先感謝。

回答

3

傳入的上下文屬於也由該委託方法返回的CALayer。通常,這是一個顯示上下文,但如果使用-renderInContext:手動繪製圖層,它也可以是圖像或PDF上下文。 CALayers可以獨立存在,也可以用作UIView的後盾。所有的UIViews都有一層,它處理着視圖內容的實際顯示。在視圖中繪製實際上會繪製其圖層,同樣,繪製支持UIView的CALayer將顯示爲繪製到視圖。

正如我所說的,您可以創建作爲獨立實體存在的CALayers,並將它們添加到現有圖層作爲顯示子圖層。在某些情況下,需要有一個UIView來託管其背景層中的所有這些子圖層,以便在iPhone的屏幕上顯示這些圖層。

注意,根據UIView class reference

因爲視圖是層的 代表,你永遠不應該設置 視圖作爲另一個的CALayer 對象的委託。此外,您不應該更改此圖層的代表 。

這意味着對於UIView的圖層,您幾乎可以在所有情況下處理UIView中的委託方法,因此傳入該方法的圖層將成爲視圖的圖層。子層可以擁有任何東西作爲他們的委託,因爲他們沒有附加到特定的視圖。

1

有一些信息:Providing Layer Content

如果必須繪製層的內容,而不是從圖像加載它,需要實現drawLayer:inContext的:委託方法。該委託通過需要內容的圖層和用於繪製內容的CGContextRef。

因此通常是您的委託對象的上下文。在UIVIew的情況下,視圖本身就是代表。

相關問題