我有一個繼承UITableViewCell
類的自定義類,如果圖像不可用,該類將顯示圖像(標題左側)或通用深色方形。下面的代碼顯示了淺色格背景黑暗方:如何在UITableCellView中設置imageView屬性以僅顯示背景色?
imageView = [[UIImageView alloc] initWithFrame:CGRectMake(11, 6, 40, 40)];
[imageView setBackgroundColor:kBackgroundGreyColour];
[cell.contentView addSubview:imageView];
然而,而是在每個表格單元創建自定義子視圖我寧願喜歡使用通用UITableViewCell
類的現有ImageView的財產,按照上面的代碼修改它以顯示廣場。這就是我想在這一刻:
UIImageView* iv = [[UIImageView alloc] initWithFrame:CGRectMake(11, 6, 40, 40)];
[iv setBackgroundColor:[UIColor redColor]];
self.imageView.hidden = NO;
self.imageView.opaque = iv.opaque;
self.imageView.alpha = iv.alpha;
self.imageView.image = iv.image;
[self bringSubviewToFront:self.imageView];
[self.imageView setBackgroundColor:[UIColor redColor]];
我將所有這些線爲許多現有UIImageView
屬性設置爲在第一個代碼段創建UIImageView
實例相同的價值觀,然而第二代碼片段不顯示任何黑色方塊。它根本不顯示任何內容,單元看起來像只有淺色背景,沒有可見的圖像視圖。但是我發現imageView屬性不是零,所以在第二個代碼片段中執行所有這些代碼行應該顯示一些內容?
然而,只要我分配一個新的圖像到ImageView的屬性(例如self.imageView.image = [[UIImage的頁頭] INIT ...],方形示出了沒有問題的分配圖像。
編輯:只是注意的是,在第二種情況下,我設定layoutSubview功能的ImageView的框架,如:
-(void)layoutSubviews
{
[super layoutSubviews];
self.imageView.frame = CGRectMake(11, 6, 40, 40);
}
所以我的問題是: 1.哪些現有的ImageView的財產,我需要的性能設置並設置爲什麼值,以便代碼顯示一個填充了特定顏色的正方形(如代碼doe的第一個代碼段S)?
是否有使得它僅示出了不與它相關聯的任何圖像的背景色(和我可以使用設置imageView.image屬性創建
UIImage
編程的方式以顯示該顏色)。是否有可能取代現有的ImageView酒店爲
UITableViewCell
類的自定義視圖不添加自定義子視圖(如第一個代碼片斷一樣),這樣我就可以顯示出與背景顏色的佔位符的UIView當圖像不可用?
非常好!感謝您確認我的懷疑,並以編程方式創建它。然而,還有一個解決方案,即:用背景色創建UIImageView並將其添加爲子視圖(就像在我的第一個代碼片段中一樣),然後最終從超級視圖中刪除並且僅在設置imageView時刪除(設置爲零)。圖像屬性。雖然,我不確定這是否會比您在所有單元格中重複使用相同的佔位符圖像更有效率。 – Amiramix 2012-03-05 13:02:51
如果你想這樣做,不需要UIImageView的所有開銷。 UIView具有您需要的所有背景顏色屬性/方法。但是如果你使用子視圖,你必須管理它的所有運動,內存,自動調整等。 如果你將一個自定義圖像放入UITableViewCell的imageview中,那麼該單元可以自己處理所有的顯示,而無需太多工作。當然,除非你想要靈活性......? – Tim 2012-03-05 20:25:09
實際上,正方形背景只是一張照片的佔位符,所以我不需要移動它,也不需要調整大小,也不需要做任何其他花哨的管理。關於UIImageView的開銷,我在imageView屬性中添加了佔位符,該屬性需要UIImageView。這樣我就不需要在每個單元格中管理額外的子視圖和屬性。 – Amiramix 2012-03-07 17:17:07