如何更改UITableHeaderView的背景颜色和文本颜色

时间:2019-10-10 15:27:04

标签: ios swift uitableview uitableviewsectionheader

我知道如何提供自定义UITableview标头以及如何对其进行自定义。但是我在将UITableview与SectionTitles结合使用时遇到了麻烦。

如何更改UITableview标头的背景颜色以及如何更改UITableview标头的文本颜色。

Requirment illustration can be found here

2 个答案:

答案 0 :(得分:1)

您可以使用以下方法为标题创建customView: 我创建了一个示例视图供您自定义。

    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

        let headerView = UIView()
        let label = UILabel()
        label.translatesAutoresizingMaskIntoConstraints = false
        label.textColor = UIColor.white
        label.numberOfLines = 0
        label.textAlignment = .center
        label.font = .boldSystemFont(ofSize: 20)
        headerView.addSubview (questionLabel)
        headerView.backgroundColor = .blue
        NSLayoutConstraint.activate([
            questionLabel.centerYAnchor.constraint(equalTo: headerView.centerYAnchor, constant: 0),
            questionLabel.leadingAnchor.constraint(equalTo: headerView.leadingAnchor, constant: 0),
            questionLabel.trailingAnchor.constraint(equalTo: headerView.trailingAnchor, constant: 0)
            ])

        return headerView

    }

答案 1 :(得分:0)

我找到了解决方案。 UITableViewDelegate的此方法可用于自定义默认的节标题。

//Meyer's singleton
class MySingleton{
public:
  static MySingleton& getInstance(){
    static MySingleton instance;
    // volatile int dummy{};
    return instance;
  }
private:
  MySingleton()= default;
  ~MySingleton()= default;
  MySingleton(const MySingleton&)= delete;
  MySingleton& operator=(const MySingleton&)= delete;

};


//with call_once
class MySingleton{
public:
  static MySingleton& getInstance(){
    std::call_once(initInstanceFlag, &MySingleton::initSingleton);
    // volatile int dummy{};
    return *instance;
  }
private:
  MySingleton()= default;
  ~MySingleton()= default;
  MySingleton(const MySingleton&)= delete;
  MySingleton& operator=(const MySingleton&)= delete;

  static MySingleton* instance;
  static std::once_flag initInstanceFlag;

  static void initSingleton(){
    instance= new MySingleton;
  }
};

MySingleton* MySingleton::instance= nullptr;
std::once_flag MySingleton::initInstanceFlag;