我有一個自定義的UITableViewCell子類,它顯示圖像和文字。 下載圖像時,在顯示錶格視圖單元格時可隨時使用文本。在UIView中使用CoreGraphics繪製圖像並在其上繪製文本drawRect
從various places,我讀到最好是隻需要一個視圖並且相比於具有多個子視圖(在這種情況下,一個UIImageView視圖和2個的UILabel視圖)
在視圖的drawRect方法來提高性能借鑑的東西我不想繪製自定義表格視圖單元格的drawRect
因爲
- 圖像的圖像可能會無法使用在第一時間其所謂,
- 我不想畫的整體形象每次有人打電話給drawRect。
視圖中的圖像只能在有人要求顯示圖像時完成(例如網絡操作完成並且圖像可用於呈現時)。然而,該文本是在 - drawRect
方法中繪製的。
的問題:
我不能顯示在屏幕上的圖像,一旦它被下載。 我使用的代碼是─目前
- (void)drawImageInView { //.. completion block after downloading from network if (image) { // Image downloaded from the network UIGraphicsBeginImageContext(rect.size); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor); CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor); CGContextSetLineWidth(context, 1.0); CGContextSetTextDrawingMode(context, kCGTextFill); CGPoint posOnScreen = self.center; CGContextDrawImage(context, CGRectMake(posOnScreen.x - image.size.width/2, posOnScreen.y - image.size.height/2, image.size.width, image.size.height), image .CGImage); UIGraphicsEndImageContext(); } }
我也試過:
UIGraphicsBeginImageContext(rect.size);
[image drawInRect:rect];
UIGraphicsEndImageContext();
無濟於事。
- 如何確保文字在繪製時位於圖像上方。應該在
UIGraphicsEndImageContext();
之後撥打[self setNeedsDisplay]
以達到 確保文本呈現在圖像之上?
使用UIImageView的問題是它的-drawRect方法沒有被調用。 http://developer.apple.com/library/ios/#documentation/uikit/reference/UIImageView_Class/Reference/Reference.html所以我將不得不在圖像視圖頂部使用幾個標籤。我同意不優化,如果不需要,但我確實看到一些中斷滾動,這就是爲什麼我試圖優化它。 – Devang
我不明白這是一個問題。在你的自定義單元格中,你可以使用imageView作爲獨立的,然後重寫-drawRect(單元格)來繪製文本。 –
問題(至少從我的實驗中)是imageView位於超級視圖的頂部,因此在顯示圖像視圖時甚至繪製文本時,超級視圖上所做的任何操作都會隱藏起來。 – Devang