2016-08-25 32 views
1

我是蘋果iOS編程中的context概念的新手。目前,我正在考慮views。我想用最簡單的方法繪製弧線,然後我找到了這個question and answer。但後來我對上下文概念感到困惑。我想繪製一些東西,我需要調用繪圖函數,並提供我想要繪製函數繪製的地方view。但在那裏,我與UIGraphicsGetCurrentContext()混淆。那「當前的情況」是什麼?它是UIScreen.mainScreen()?如果我想將「當前上下文」設置爲UICollectionViewCell中的視圖,那麼所有繪製的像素都將與視圖相關?我可以這樣做嗎?如何使CGContextDrawPath在嵌套子視圖上繪製?

回答

1

您在CocoaTouch中繪製的方式是將子類UIView創建爲自定義視圖並實現drawRect:(CGRect)rect方法。把你的繪圖代碼放在drawRect之內。類似於:

-(void)drawRect:(CGRect)rect { 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGPathRef path = CGPathCreateWithRect(rect, NULL); 
    [[UIColor blueColor] setStroke]; 
    CGContextSetLineWidth(context, 4.0); 
    CGContextAddPath(context, path); 
    CGContextDrawPath(context, kCGPathFillStroke); 
    CGPathRelease(path); 
} 

如果需要,您可以將自定義UIView放入UICollectionViewCell中。

+0

等等,所以我對UIView進行子類化(例如:WOWView),然後在故事板上將該類設置爲WOWView? –

+0

是的,沒錯。 – EricS

+0

並忽略drawRect的'rect'參數。它僅用作複雜視圖中的優化。 – EricS