2012-08-13 87 views
3

我只是想知道setStroke知道如何設置context的筆畫,在setStroke方法中根本沒有提及?爲CGContextRef設置顏色

CGContextRef context = UIGraphicsGetCurrentContext(); 
CGContextSetLineWidth(context, 10); 
[[UIColor colorWithRed:0.6 green:0.6 blue:0.6 alpha:1.0] setStroke]; 

btw你多長時間以編程方式繪製自己的對象?

回答

3

這是setStroke你的顏色的實現:

- (void)setStroke { 
    CGContextSetStrokeColorWithColor(UIGraphicsGetCurrentContext(), self.CGColor); 
} 

它使用相同的函數來獲得您所使用的上下文。

+0

考慮到UIKit是封閉的源碼,除非你爲Apple工作或者有真正的好朋友,他們不關心他們的工作,那麼就沒有辦法知道這是否是實現:)現在,是基於我在開發者網站上看到的一些代碼示例,我們不能太確定的最簡單的方法。 – Joe 2012-08-13 20:45:09

+2

@Joe我使用[Hopper](http://www.hopperapp.com/)反彙編iOS模擬器的UIKit二進制文件。我非常確定這是如何實施的。 – 2012-08-13 21:33:13

+0

只需檢查。 +1 :) – Joe 2012-08-13 22:19:01

2

您檢索上下文以設置線寬的方式與顏色設置筆觸的方式相同。原因是因爲UIGraphicsGetCurrentContext()檢索到的主線程只有一個當前圖形上下文。您可以推送和彈出不同的上下文,但該函數將始終返回當前的上下文。請記住,在iOS中,此函數不是線程安全的,只能從主線程調用。