为什么不UITableViewCell背景颜色工作(在界面生成器中设置)?

为什么不UITableViewCell背景色工作(在界面生成器中设置)?

我从一些谷歌search注意到,在UITableViewController的自定义子类中设置的下面的代码确实工作(见下文):

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { cell.backgroundColor = [UIColor redColor]; } 

但是我仍然想明白为什么界面生成器有一个TableViewCell的背景颜色设置,这似乎不起作用?

谢谢

这有点晚,但我碰到这个问题…设置contentView的背景颜色工作正常:

 cell.contentView.backgroundColor = [UIColor redColor]; 

什么对我来说是创造我自己的UIView对象被设置为UITableViewCell的背景视图。 在cellForRowAtIndexPath中:

 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; UIView* bgview = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 1, 1)]; bgview.opaque = YES; bgview.backgroundColor = [UIColor orangeColor]; [cell setBackgroundView:bgview]; 

试图设置UITableViewCell本身的背景颜色不是你应该如何做的。 表格单元格可以访问五个有用的视图的集合,其中之一是backgroundView

推荐阅读:

http://cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html

接着:

http://cocoawithlove.com/2010/12/uitableview-construction-drawing-and.html

根据Apple文档,您应该始终为tableView:willDisplayCell:forRowAtIndexPath:单元格提供更改,而不是tableView:cellForRowAtIndexPath:方法。

这工作!

 [cell.textLabel setBackgroundColor:[UIColor clearColor]]; [cell.contentView setBackgroundColor:[UIColor redColor]]; 

这很简单,并且工作原理:在界面构build器中,将视图对象添加到相同维度的UITableViewCell,并将控件放置在该视图中。 然后你得到任何你想要的背景颜色。

编辑:这是一个理由接受,它只是让我感到震惊:仔细看看你双击IB中的UITableViewCell,你放入你的笔尖,开始添加东西,你得到了什么:你没有得到看起来很简单的矩形,你会得到一个很明显的椭圆形矩形:内容视图。 所以你所能做的只是在IB中设置UITableViewCell的内容视图,而设置内容视图的背景色属性不会在表中产生颜色变化。 正如文档所说,UITableViewCells是很多部件的复杂怪物,在UITableView的调整和摆弄方面,幕后很多。

请确保在定义单元格颜色之前,您的backgroundView为null

 cell.backgroundView = nil; cell.backgroundColor = [UIColor redColor]; 

它完美的作品,如果你select桌面视图,并设置背景为红色,整个表将是红色的。 也许你不把桌子连起来

希望它有帮助

(尝试这个)

苹果公司的IBdevise是通用的,可以应用于多种组件,也针对高度技术性的受众(开发人员)。 因此,它没有被devise(作为一个应用程序)为每个组件/情境types正确地完全自定义界面。 所以在这种情况下,看似设置背景色的能力有些误导。

是的,使用setBackgroundColor

 self.table.separatorColor=[UIColor whiteColor]; [table setBackgroundColor:[UIColor colorWithRed:.8 green:.8 blue:1 alpha:1]]; 

您可以在Interface Builder中部分执行此操作(最近可能已添加到Xcode中):

  • 展开故事板文档大纲中的单元格并select“内容视图”
  • 在“属性”检查器中设置“内容”视图背景颜色
  • select单元格中的每个内容项目,并将其背景颜色设置为ClearColor

尽pipe如此,仍然没有看到设置配件背景的方法。

我也遇到了这个问题。 在IB中,您可以在select单元格时更改单元格的背景颜色。 这是不正确的。 您应该转到故事板左侧的文档大纲并select单元格内的内容视图。 更改内容视图的背景。 你现在应该得到正确的单元格颜色。

 -(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{ UIView *view = [[UIView alloc] init]; [view setBackgroundColor:[UIColor redColor]]; [cell setSelectedBackgroundView:view];} 

我们需要改变这种方法的颜色。

试试这个对我有用:

 - (void)tableView:(UITableView *)tableView1 willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { [cell setBackgroundColor:[UIColor clearColor]]; tableView1.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"Cream.jpg"]]; }