如何设置 UITableView 空白空间的 backgroundColor 不同?
Posted
技术标签:
【中文标题】如何设置 UITableView 空白空间的 backgroundColor 不同?【英文标题】:How to set UITableView empty space's backgroundColor different? 【发布时间】:2018-11-02 07:36:54 【问题描述】:这是一个包含 5 个单元格和一个部分的 tableView。拉动tableView刷新时有蓝色间隙。
代码如下:
- (UITableView *)salesRankTableView
if(!_salesRankTableView)
_salesRankTableView = [[UITableView alloc] initWithFrame: CGRectMake(8, 183, KScreenWidth - 16, KScreenHeight-183-64) style: UITableViewStyleGrouped];
[_salesRankTableView registerNib: [UINib nibWithNibName: NSStringFromClass(SalesRankTableViewCell.class) bundle:nil] forCellReuseIdentifier: kSalesRankTableViewCell];
_salesRankTableView.layer.contents = (__bridge id _Nullable)([UIImage imageNamed: @"blue"].CGImage);
MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget: self refreshingAction: @selector(rankRefresh)];
header.layer.contents = (__bridge id _Nullable)([UIImage imageNamed: @"white"].CGImage);
_salesRankTableView.mj_header = header;
return _salesRankTableView;
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
return 1;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return 5;
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
return 56;
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
return [UIView new];
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
return [UIView new];
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
return CGFLOAT_MIN;
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
return CGFLOAT_MIN;
为了去掉tableView前面的蓝色缝隙。我更改了 tableView 的背景颜色。并遇到了另一个问题。
tableView 的空白处的 backgroundColor 很重要。 如何设置不同?
代码如下:
- (UITableView *)salesRankTableView
if(!_salesRankTableView)
_salesRankTableView = [[UITableView alloc] initWithFrame: CGRectMake(8, 183, KScreenWidth - 16, KScreenHeight-183-64) style: UITableViewStyleGrouped];
[_salesRankTableView registerNib: [UINib nibWithNibName: NSStringFromClass(SalesRankTableViewCell.class) bundle:nil] forCellReuseIdentifier: kSalesRankTableViewCell];
_salesRankTableView.layer.contents = (__bridge id _Nullable)([UIImage imageNamed: @"white"].CGImage);
MJRefreshNormalHeader *header = [MJRefreshNormalHeader headerWithRefreshingTarget: self refreshingAction: @selector(rankRefresh)];
header.layer.contents = (__bridge id _Nullable)([UIImage imageNamed: @"white"].CGImage);
_salesRankTableView.mj_header = header;
return _salesRankTableView;
我之前用之前的代码在tableView后面插入了一个白色的view。
有点用力,如何做的更好?
【问题讨论】:
可能最简单的解决方案是保持白色背景,但还要观察contentSize
并相应地更改表格视图的高度。
你有两个部分或两个不同的单元格。不知道没有部分和没有行单元没有人了解你的确切问题。看看你是否有两个部分比 heightForHeaderInSection 和 heightForFooterInSection 返回 0.
@Krishna kushwaha,只有一个部分,一种细胞
【参考方案1】:
尝试将_salesRankTableView
的背景色设置为white
。
_salesRankTableView.backgroundColor = [UIColor clearColor]; // Newline
_salesRankTableView.mj_header.backgroundColor = [UIColor whiteColor];
更新:
替换下面的tableView
委托方法:
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat
return 0
func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView?
return UIView(frame: CGRect.zero)
【讨论】:
没用。标题视图是关联对象,用于拉刷新。 这符合第一张图片的情况。 答案已编辑。请检查。 “新行”评论的新事物和更新 对不起。首先,您需要了解 mj_header 是什么。 github.com/CoderMJLee/MJRefresh。我插入一个图层并观察tableView的偏移来解决它【参考方案2】:你可以通过在 viewDidLoad() 中输入一行代码来实现
self.tableView.tableFooterView = UIView()
这里的空闲单元格将被删除,如果您希望将 tableview 颜色更改为其他颜色,您可以通过更改 tableView 的背景颜色来实现。如果您希望超级视图背景的颜色作为可用空间,您应该将 tableview 背景颜色更改为“clear”。
self.tableView.backgroundColor = UIColor.clear
希望它会有所帮助。
【讨论】:
谢谢粉丝。这是完美的解决方案 不适合我的情况。这是上层的情况。事实上,我使用github.com/CoderMJLee/MJRefresh。我认为答案是对回购做一些改变。而 Sulthan 的建议更适合。以上是关于如何设置 UITableView 空白空间的 backgroundColor 不同?的主要内容,如果未能解决你的问题,请参考以下文章