iOS - 表格视图 - 静态单元格(分组) - 更改部分标题文本颜色

Posted

技术标签:

【中文标题】iOS - 表格视图 - 静态单元格(分组) - 更改部分标题文本颜色【英文标题】:iOS - table view - static cells (grouped) - change section header text color 【发布时间】:2012-04-19 16:17:54 【问题描述】:

概述

我有一个带有表格视图的 ios 项目,其规格如下:

静态单元格(内容不是动态填充的) 样式已分组

问题

    如何更改静态表格视图部分标题的文本颜色?

【问题讨论】:

【参考方案1】:

您需要创建自己的标题视图:

在您的 tableview 数据源/委托中实现

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
    NSString *sectionTitle = [self tableView:tableView titleForHeaderInSection:section];
    if (sectionTitle == nil) 
        return nil;
    

    // Create label with section title
    UILabel *label = [[[UILabel alloc] init] autorelease];
    label.frame = CGRectMake(20, 6, 300, 30);
    label.backgroundColor = [UIColor clearColor];
    label.textColor = [UIColor colorWithHue:(136.0/360.0)  // Slightly bluish green
                                 saturation:1.0
                                 brightness:0.60
                                      alpha:1.0];
    label.shadowColor = [UIColor whiteColor];
    label.shadowOffset = CGSizeMake(0.0, 1.0);
    label.font = [UIFont boldSystemFontOfSize:16];
    label.text = sectionTitle;

    // Create header view and add label as a subview

    // you could also just return the label (instead of making a new view and adding the label as subview. With the view you have more flexibility to make a background color or different paddings
    UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, SectionHeaderHeight)];
    [view autorelease];
    [view addSubview:label];

    return view;

【讨论】:

您可以只返回标签,将其作为子视图添加到其他空视图中没有任何好处。 是的,对....但也许您想重新定位您的标签或类似的东西... 非常感谢!!!。当标签直接返回时,标签不位于X位置 6.根据我的理解,返回哪个视图,它是frame.origin.xframe.origin.y被忽略。因此,当标签作为子视图添加到视图并返回视图时,标签的frame.origin.xframe.origin.y 将被保留,因为它是相对于它的超级视图。 是的。这就是为什么使用另一个 UIView 并将 UILabel 作为子视图是有意义的。 创建自己的视图的解决方案非常糟糕。【参考方案2】:

这个也可以:

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section

    [[((UITableViewHeaderFooterView*) view) textLabel] setTextColor:[UIColor whiteColor]];

.....

【讨论】:

【参考方案3】:

只有在添加标题的高度和视图后,我才能查看标题

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
    return 110;

【讨论】:

【参考方案4】:

在 Swift 4.2 中

override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) 
    if let headerView = view as? UITableViewHeaderFooterView 
        headerView.textLabel?.textColor = UIColor.OMGColors.dimText
    

无需制作自己的标题视图 - 这违背了静态单元格的目的。我很惊讶你不能直接在 IB 中的某个地方设置它......

【讨论】:

以上是关于iOS - 表格视图 - 静态单元格(分组) - 更改部分标题文本颜色的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 8 上选中时,表格视图单元格会跳转

设置静态表格视图单元格的复选标记

如何更改分组的表格视图单元格的背景?

静态单元格不显示在模拟器中[重复]

Nib 文件中的静态单元格未显示

Objective C - iOS,在屏幕外的静态表格单元格中遍历 UILabel