问题描述
我正在使用搜索栏创建一个简单的样式表视图,并且在Apple的表视图中复制gutter的外观(当表视图被向下拖动时)时出现问题。
I'm building a plain style table view with a search bar and I'm having trouble replicating the look of the "gutter" (when the table view is dragged down) in Apple's table views.
如果我设置表视图的背景颜色,则看起来很好,但是我的单元格使用该颜色作为背景颜色。
If I set the background color of the table view, the gutter looks fine, but my cells use that color as the background color.
我尝试在 tableView:cellForRowAtIndexPath:
中设置单元格和单元格的contentView的背景颜色,但它在以后的点被覆盖。我也尝试创建一个空视图,并将其设置为单元格的backgroundView和作为contentView的子视图,但只有边缘是白色的。
I've tried setting the background color of the cell and of the cell's contentView in tableView:cellForRowAtIndexPath:
, but it gets overridden at some later point. I've also tried creating an empty view and setting it as the cell's backgroundView and as a subview of the contentView, but only the edges are colored white.
解决方案我可以想到:
- 将UITableViewController子类转换为UIViewController,并在表视图后插入一个空白视图。
- 创建一个不允许覆盖backgroundColor的UITableViewCell子类。
相当多的工作。有更简单的方法吗?
Both of these solutions will require quite a bit of work. Is there an easier way?
UPDATE :第一个解决方案没有工作。我必须将表视图的背景颜色设置为clearColor,以便使gutter更改为视图的颜色。但是,当我这样做,我得到的结果与在表视图上设置backgroundColor相同。
UPDATE: The first solution didn't work. I have to set the table view's background color to clearColor in order for the gutter to change to the view's color. However, when I do this, I get the same result as setting the backgroundColor on the table view.
推荐答案
方法称为 -tableView:willDisplayCell:forRowAtIndexPath:
,可以用于在表视图修改后自定义单元格的背景颜色。从:
There is a delegate method called -tableView:willDisplayCell:forRowAtIndexPath:
that can be used to customize the background color of the cell after the table view has made it's modifications. From the UITableViewDelegate reference:
另外,由于当试图滚动过最后一个单元格时,背景颜色从表格的底部窥探出来,我不得不创建一个页脚视图并更新表视图的内容:
Also, since the background color peeks out from the bottom of the table when trying to scroll past the last cell, I had to create a footer view and update the table view's content inset:
UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 320)];
footerView.backgroundColor = [UIColor whiteColor];
self.tableView.tableFooterView = footerView;
[footerView release];
UIEdgeInsets inset = self.tableView.contentInset;
inset.bottom = 44 - footerView.frame.size.height;
self.tableView.contentInset = inset;
这篇关于在平面样式表视图上设置UITableViewCell背景颜色?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!