如何为 UITableView 部分标题动态设置背景颜色?
Posted
技术标签:
【中文标题】如何为 UITableView 部分标题动态设置背景颜色?【英文标题】:How to dynamically set background color for UITableView section headers? 【发布时间】:2014-05-04 04:55:37 【问题描述】:我正在努力实现类似于 iPhone 上的照片应用程序的 UITableView 部分标题。顶部标题视图应具有灰色背景,其他标题视图应具有白色背景。基于此,我有几个问题需要帮助:
如何找出哪个节标题在顶部(例如,与导航栏相邻)?请注意,导航栏是半透明的(这意味着它在其下方显示单元格),因此我无法通过查找可见单元格然后基于此检索部分。
将顶部标题的背景颜色更改为不同的颜色,然后在不再是顶部时返回原始颜色的方法应该是什么?
【问题讨论】:
你问的是节标题吗? @Morpheus - 是的,部分标题。 【参考方案1】:创建属性NSUInteger sectionPath
并在viewDidLoad
中使用0
对其进行初始化。
创建一个 headerView 并为特定部分更改该视图的背景颜色。
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 30)];
UILabel *headerLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, headerView.frame.size.width, headerView.frame.size.height)];
headerLabel.textAlignment = NSTextAlignmentCenter;
headerLabel.text = [titleArray objectAtIndex:section];
if(section == sectionPath)
headerLabel.backgroundColor = [UIColor grayColor];
else
headerLabel.backgroundColor = [UIColor whiteColor];
[headerView addSubview:headerLabel];
return headerView;
在滚动过程中动态查找UITableView
中最顶部的标题
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
for (NSIndexPath* i in [yourTableViewName indexPathsForVisibleRows])
sectionPath = [i indexAtPosition:0];
【讨论】:
那行不通。我需要标题根据哪个在顶部动态更改颜色。因此,一旦标题滚动离开,它需要将颜色更改为白色。然后出现在顶部的那个需要切换到灰色。 意味着,在滚动时,您希望最上面的标题具有灰色背景色? 正确。滚动最上面的标题以保持灰色,其余为白色。就像在 ios7 上的照片应用程序中一样以上是关于如何为 UITableView 部分标题动态设置背景颜色?的主要内容,如果未能解决你的问题,请参考以下文章
如何为tableView部分的第一个和最后一个单元格设置圆角
如何为自定义 UITableView 标题部分笔尖添加分隔线? [复制]