为什么不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"]]; }