2012-06-04 60 views
0

我做一些定製,並與困惑UIGraphicGetCurrentContext()

CGContextRef context = UIGraphicsGetCurrentContext(); 

我面臨的問題:什麼是這一背景下,如何此背景下的大小定義的默認大小。

編輯:

我問,因爲我在link1link2下面的教程...

請大家看一個背景下,當我們在紅色的背景細胞從link1和頭紅色部分以及link2

然而,這些寬度是不一樣的,即使他們的UIView子類,我迷路找出原因...

回答

0

我不明白什麼是你的問題,尤其是當Raywenderlich的教程非常清楚地說明了這一點。

CGContextRef context = UIGraphicsGetCurrentContext(); 

會給你當前的「畫布」,然後你只是改變那個畫布的狀態。

CGContextRef context = UIGraphicsGetCurrentContext(); 

CGColorRef redColor = 
    [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:1.0].CGColor; 

CGContextSetFillColorWithColor(context, redColor); 
CGContextFillRect(context, self.bounds); 

大小由無論你調用get上下文功能定義,函數被調用自定義的drawRect方法內,根據蘋果文檔:

當前的圖形上下文是默認爲零。在調用其 drawRect:方法之前,視圖對象會將有效上下文推送到堆棧上,使其變爲最新。但是,如果您未使用UIView對象執行繪圖,則必須使用UIGraphicsPushContext函數手動將有效上下文手動推入堆棧 。

因此,當傳遞self.bounds時,會使用調用此函數的元素的大小。

這段代碼甚至可以針對不同大小的不同單元格調用,因爲每個單元格都會調用drawRect方法並獲得相應的大小。

也許你的困惑在於,它們是UIView的子類,並不意味着它們在故事板的視圖中具有「UIView」屬性。這意味着它們是與uiview具有相同結構的元素(這就是爲什麼他們可以調用drawRect),但是您將擴展或自定義您的期望行爲。

PD:剛纔注意到我今天早些時候回答了你的另一個問題哈哈。