[英]Can't set background color of UITableViewCell in IB
我創建了一堆單元格,可以在表視圖中重復使用。 所有這些單元格內部都具有不同的UILabel
和一些UIImageView
(沒有覆蓋整個單元格)。
在IB中設置背景顏色無效(始終為白色或透明,不能說出其中之一)。 但是,如果我按Command-R(模擬界面),則該單元在模擬器中具有正確的背景色。
我試圖在tableView:cellForRowAtIndexPath:
設置它,但是它不能像我想的那樣工作。
這可以解決問題:
cell.contentView.backgroundColor = [UIColor redColor];
但是這些沒有效果(即使我將cell.contentView.backgroundColor
設置為clearColor
):
cell.backgroundView.backgroundColor = [UIColor redColor];
cell.backgroundColor = [UIColor redColor];
我在IB中設置所有布局/字體/背景素材。 知道為什么在這種情況下不起作用嗎?
為什么我需要修改contentView
的backgroundColor
而不是backgroundView
的?
這似乎是一個普遍的問題。 有人可以指出正確的方向,以便(最終)理解在表格視圖單元格中如何處理背景色。
要更改單元格的背景顏色,必須在willDisplayCell:forRowAtIndexPath:
方法中進行操作。 概述底部附近的UITableViewCell文檔中提到了這一點。 因此,您需要:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
cell.backgroundColor = [UIColor redColor];
}
contentView只是推薦的子視圖,用於放置自定義控件,以便在進行表編輯時正確地布置單元格。
有一個更簡單的解決方案:在Interface Builder中創建UITableViewCell
時,只需拖放其他UIView
,使其覆蓋您在IB中創建的整個UITableViewCell
。 將其他UI元素放在此其他UIView
之上。 您可以將此額外的UIView
設置為所需的任何背景。
在StackOverflow上有很多答案,建議您通過使用以下代碼行來更改UITableViewCell
的背景顏色:
cell.contentView.backgroundColor = [UIColor redColor];
如果通過稍微調整contentView
的幀大小將陰影添加到單元格中,則可能會發現此行將同時更改單元格的背景顏色和陰影區域的顏色。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.