UITableView 部分标题更改当前标题的样式

Posted

技术标签:

【中文标题】UITableView 部分标题更改当前标题的样式【英文标题】:UITableView Section Header Change Style of Current Header 【发布时间】:2015-08-05 01:17:32 【问题描述】:

有没有人知道当 UITableView 在 Swift 中滚动时访问和更改 UITableView 中 CURRENT 部分标题的样式的内置方法或自定义方法(样式纯)。

我的页眉预设样式是:

override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) 
    let header: UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView //recast your view as a UITableViewHeaderFooterView
    header.textLabel.font = UIFont(name: "HelveticaNeue-CondensedBold", size: 14)
    header.contentView.backgroundColor = UIColor.groupTableViewBackgroundColor()
    header.textLabel.textColor = UIColor.grayColor()

具体来说,我想在视图滚动时将当前节标题的标题背景颜色更改为黑色,并将文本颜色更改为白色。其他表头的样式保持预设样式。

【问题讨论】:

【参考方案1】:

在我当前的应用程序中:

override public func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?

    let view: UIView
    if let _view: UIView = tableView.headerViewForSection(section)
    
        view = _view
     else 
        let dxOffset: CGFloat = 16.0
        view = UIView(frame: CGRectMake(dxOffset, 0, tableView.frame.size.width - dxOffset, TableViewViewsHeight.sectionHeight))
    

    // create our label
    let label: UILabel = UILabel(frame: view.frame)
    label.textColor = UIColor.appEmptyTextColor()
    label.text = "\(self.letters[section])"
    label.font = UIFont.systemFontOfSize(UIFont.smallSystemFontSize() + 4.0)

    // create the separator frame
    var separatorFrame: CGRect = view.frame
    separatorFrame.size = CGSizeMake(separatorFrame.size.width, 1.0)
    separatorFrame.offset(dx: 0.0, dy: view.frame.size.height - 1.0)

    // create the separator
    let imageView: UIImageView = UIImageView(frame: separatorFrame)
    imageView.backgroundColor = UIColor.appEmptyGolfTrainingTextColor()
    imageView.alpha = 0.4

    // add subviews
    view.addSubview(label)
    view.addSubview(imageView)

    // setup the view
    view.backgroundColor = UIColor.whiteColor()

    return view

这将创建一个带有白色背景的标题、一个分隔符和一个包含字母的标签。

您应该使用func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? 来更改节标题的外观。

【讨论】:

这只是设置标题样式的代码。您能否提交一个示例,说明如何在视图滚动不同部分时动态更改当前部分标题的样式。我希望贴在表格视图顶部的标题与下面的其他标题具有不同的样式。 您的意思是在内容滚动时? 是的。随着内容的滚动。成为当前节标题的每个标题(粘在 tableview 的顶部)在粘在 tableview 的顶部时采用自定义样式 这很有趣。订阅!

以上是关于UITableView 部分标题更改当前标题的样式的主要内容,如果未能解决你的问题,请参考以下文章

UITableView 部分边框

自定义 UITableView 部分索引

UITableView 是不是支持带有矩形(非圆形)部分的分组样式?

在普通样式的 UITableView 中更改自定义 UITableViewCell 单元格的背景颜色

UITableView 自己改变样式

根据部分更改单元重用标识符