【问题标题】:How do you change the colour of a section title in a tableview?如何更改表格视图中部分标题的颜色?
【发布时间】:2016-09-21 10:40:40
【问题描述】:

这是我目前拥有的。

如何参考这个以便我可以更改文本颜色以匹配我的索引列表? sectionForSectionIndexTitle 可以很好地添加正确的部分标题,但究竟如何访问标题元素?

还是不可能,我需要重新绘制视图并使用 viewForHeaderInSection 添加它?

【问题讨论】:

标签: ios swift tableview uitableviewsectionheader


【解决方案1】:

你可以使用UITableViewDelegate的方法之一

swift3及以上

  func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
    if let headerView = view as? UITableViewHeaderFooterView {
        headerView.contentView.backgroundColor = .white
        headerView.backgroundView?.backgroundColor = .black
        headerView.textLabel?.textColor = .red
    }
}

目标 C

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
    if([view isKindOfClass:[UITableViewHeaderFooterView class]]){
        UITableViewHeaderFooterView * headerView = (UITableViewHeaderFooterView *) view;
        headerView.textLabel.textColor  = [UIColor RedColor];  
    }
}

作为参考,我从here获取了模型答案

【讨论】:

  • 可能是我最喜欢的答案。
【解决方案2】:

一个班轮解决方案(使用可选链接):

override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
    (view as? UITableViewHeaderFooterView)?.textLabel?.textColor = UIColor.red
}

【讨论】:

  • 这与@Anbu.karthik 的解决方案有何不同?
  • ^^ 结果是一样的,但是这个使用了可选链接,因此产生了一行,而不是 if let 条件。我会更新答案指出这一点
  • 适用于手机和平板电脑,但在 Mac 催化剂上运行时无法更改页脚颜色
【解决方案3】:

自定义标题:

override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
    let title = UILabel()
    title.font = UIFont(name: "SFUIDisplay-Light", size: 13)!
    title.textColor = UIColor.redColor()

    let header = view as! UITableViewHeaderFooterView
    header.textLabel!.font=title.font
    header.textLabel!.textColor=title.textColor
    header.contentView.backgroundColor = UIColor.whiteColor()
}

【讨论】:

    【解决方案4】:

    快速解决方案

    func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
        view.tintColor = UIColor.red
        let header = view as! UITableViewHeaderFooterView
        header.textLabel?.textColor = UIColor.white
    }
    

    【讨论】:

      【解决方案5】:

      您可以制作自己的节标题(页眉/页脚)视图,这很容易。

      class BlackTableViewHeaderFooterView : UITableViewHeaderFooterView {
      
          override init(reuseIdentifier: String?) {
              super.init(reuseIdentifier: reuseIdentifier)
      
              contentView.backgroundColor = .black
      
              textLabel?.font = UIFont.preferredFont(forTextStyle: .body)
              textLabel?.numberOfLines = 0
              textLabel?.textColor = .white
          }
      
          required init?(coder aDecoder: NSCoder) {
              fatalError("init(coder:) has not been implemented")
          }
      }
      
      class TableViewController : UITableViewController {
      
          override func viewDidLoad() {
              super.viewDidLoad()
              tableView.register(BlackTableViewHeaderFooterView.self, forHeaderFooterViewReuseIdentifier: "\(BlackTableViewHeaderFooterView.self)")
              // do other setup
          }
      
          override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
              let header = tableView.dequeueReusableHeaderFooterView(withIdentifier: "\(BlackTableViewHeaderFooterView.self)")
              header.textLabel?.text = "" // set your header title
              return header
          }
      }
      

      【讨论】:

        【解决方案6】:

        我会使用 Appearance() 代理类。我通常将它们添加到 AppDelegate 中的一个函数中,并称它们为 didFinishLaunching。

        private func setupApperances() {
            UILabel.appearance(whenContainedInInstancesOf: [UITableViewHeaderFooterView.self]).textColor = .red
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-12
          • 2010-10-23
          • 2015-11-11
          • 2011-03-18
          相关资源
          最近更新 更多