使用Swift 3,我试图以编程方式更改Section的标题颜色。
如何将backgroundColor更改为白色,将Text Color更改为黑色?
部分标题会改变颜色,但不会显示任何文字,然后当我添加代码以更改标题文字颜色时,它会崩溃
由于未捕获的异常而终止应用 ' NSInvalidArgumentException',原因:'无法将自我添加为子视图'
Swift Code
// Title for Header
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
// Section Names
let sectionNames = ["Followed Blogs", "All Blogs"]
return sectionNames[section]
}
// View for Header
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = UIView()
let headerLabel = UILabel()
let sectionNames = ["Followed Blogs", "All Blogs"]
headerLabel.text = sectionNames[section]
headerLabel.frame = CGRect(x: 45, y: 5, width: 100, height: 35)
headerLabel.addSubview(headerLabel)
if (section == 0) {
headerView.backgroundColor = UIColor.green
headerLabel.textColor = UIColor.black
} else {
if darkMode {
headerView.backgroundColor = UIColor.white
headerLabel.textColor = UIColor.black
} else {
headerView.backgroundColor = UIColor.black
headerLabel.textColor = UIColor.white
}
}
return headerView
}
// Height for Section
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 45
}
答案 0 :(得分:1)
headerLabel.addSubview(headerLabel)
正在向self添加标签,这是您的错误来源
根据我对您的代码的理解,您可能应该使用headerView.addSubview(headerLabel)
而不是
文字"关注博客"不适合它显示为"跟随B ..."
这(很可能)是一个布局问题,我个人会调查为标签添加自动布局约束,以便它绑定到父视图的顶部/底部/左/右边距
答案 1 :(得分:0)
这只是为了补充MadProgrammer的答案。我认为应该使用UIView
UITableViewHeaderFooterView
用法:
tableViewInstance.register(UITableViewHeaderFooterView.self, forHeaderFooterViewResuseIdentifier: "headerIdentifier")
然后在viewForHeaderInSection
:
let tableViewHeader = tableview.dequeueReusableHeaderFooterView(withIdentifier: "headerIdentifier")
btw,关于文字"Followed Blogs"
因其标签的宽度对于当前字体来说太小而不合适。为什么不添加这样的约束:
headerView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-5-[label]-5-|",
options: [],
metrics: nil,
views: ["tableView": headerLabel]))
headerView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-5-[label]-5-|",
options: [],
metrics: nil,
views: ["tableView": headerLabel]))
你让你的tableView的headerHeight变得动态