2011-11-17 63 views
0

這可以在別處回答,如果是這樣可恥的是我......畫線在Objective-C

我在畫一個UIView(被添加到一個UITableViewCell)的表,我目前按照行和列布置文本,但是就邊界而言,我使用的是一個圖像(頂角線與角半徑,底線,垂直線和水平線)。

我想繪製這些使用CGContextMoveToPoint代碼,但它可以指定UIView使用?在該方法中,所有內容都被添加到動態創建的視圖中,我想在返回之前在該視圖中繪製線條。

看來這不會覆蓋drawRect的工作?

即僞代碼:

-(UIView *)myView { 
    UIView *myView = [[UIView alloc] initWithFrame:CG.....]; 
    foreach(NSDictionary *d in rowArray) { 
     //draw left column text 
     //draw right column text 
    } 
    //This is what i want to do? 
    CGContextRef currentContext = UIGraphicsGetCurrentContext(myView?????); 
} 
+0

是否有任何理由你繪製一個表,而不是隻是嵌套另一個UITableView? – sosborn

回答

3

如果你想在沒有存儲器中的圖像,你有drawRect要做到這一點,因爲它會被丟棄每一幀,而不是保存畫。如果你想保存一些東西,你可以創建一個圖像,繪製圖像,並將其添加到視圖中。

+0

關鍵在於,在Cocoa和Cocoa Touch中,你等待被告知繪製,然後才繪製。只要你願意,你不能簡單地畫到屏幕上。當某些值得重繪的東西發生變化時,將視圖設置爲需要顯示;該系統會告訴您的視圖在適當的時候繪製。 –

+0

您對創建圖像和繪畫的建議非常有幫助,但在閱讀您的答案後,drawRect最終在我的頭部點擊。感謝堆 –

2

爲什麼不只是創建一個UIView子類來完成drawRect中的繪圖工作:? 我相信把繪圖代碼放在drawRect:方法之外不是一個好主意。

0

對於你只想繪製一次的東西,你可以malloc一個合適大小的位圖,使用該位圖創建一個CGBitmapContext,繪製該上下文,從該上下文創建一個圖像,並將該CGImageRef指定給CALayer你的UIView(或UIView覆蓋)。

+0

或者,'CALayer'子類並實現'drawInContext:'。該圖層將捕獲您繪製的內容並將其存儲在其「內容」中。 –