簡體   English   中英

無法在IB中設置UITableViewCell的背景色

[英]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中設置所有布局/字體/背景素材。 知道為什么在這種情況下不起作用嗎?

為什么我需要修改contentViewbackgroundColor而不是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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM