我使用了一系列标题
let sectionHeaderTitleArray = ["test1","test2","test3]
并使用
显示它们func tableView[tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return self.sectionHeaderTitleArray[section] as String
}
现在所有这一切都运行正常,但我想修改标题的背景颜色,使它们更加明显(深色)
任何想法我是否可以在一个简单的行中执行此操作,或者我是否需要使用自定义单元格来创建此
感谢
更新
//number of sections and names for the table
func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return self.sectionHeaderTitleArray.count
}
func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return self.sectionHeaderTitleArray[section] as String
}
func tableView(tableView: UITableView, ViewForHeaderInSection section: Int) -> UIView? {
return self.tableView.backgroundColor = UIColor.lightGrayColor()
}
答案 0 :(得分:63)
如果您只使用titleForHeaderInSection:
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
(view as! UITableViewHeaderFooterView).backgroundView?.backgroundColor = UIColor.black.withAlphaComponent(0.4)
}
答案 1 :(得分:23)
而不是使用
func tableView(_ tableView: UITableView,titleForHeaderInSection section: Int) -> String?
数据源方法,可以使用
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
委托方法,只需根据需要自定义UIView
。
例如,将UILabel
textLabel
的文字设置为您想要的值,将backgroundColor
的文字设置为所需的UIColor
。
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let returnedView = UIView(frame: CGRectMake(x, y, width, height)) //set these values as necessary
returnedView.backgroundColor = UIColor.lightGrayColor()
let label = UILabel(frame: CGRectMake(labelX, labelY, labelWidth, labelHeight))
label.text = self.sectionHeaderTitleArray[section]
returnedView.addSubview(label)
return returnedView
}
答案 2 :(得分:13)
你必须保持两个
titleForHeaderInSection
和
viewForHeaderInSection
以下是 Swift 3
中的一些工作代码func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return self.sectionHeaderTitleArray[section]
}
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let returnedView = UIView(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 25))
returnedView.backgroundColor = .lightGray
let label = UILabel(frame: CGRect(x: 10, y: 7, width: view.frame.size.width, height: 25))
label.text = self.sectionHeaderTitleArray[section]
label.textColor = .black
returnedView.addSubview(label)
return returnedView
}
答案 3 :(得分:10)
SWIFT 4
超级简单,通过设置标题的视图,contentView背景颜色..
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let header = tableView.dequeueReusableHeaderFooterView(withIdentifier: "headerId") as! CustomHeader
header.contentView.backgroundColor = AnyColor
return header
}
答案 4 :(得分:5)
Swift 4.X
这是经过测试的有效代码。
func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return UITableViewAutomaticDimension
}
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return "Total Count (41)"
}
func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
view.tintColor = UIColor.lightGray
let header = view as! UITableViewHeaderFooterView
header.textLabel?.textColor = UIColor.darkGray
header.textLabel?.font = UIFont.systemFont(ofSize: 14, weight: .medium)
}
答案 5 :(得分:3)
Swift 3 +
我用过这个:
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = UIView(frame: CGRect(x: 0, y: 0, width: view.frame.size.width, height: 20))
headerView.backgroundColor = .lightGray
let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false
label.text = stringValues[section]
headerView.addSubview(label)
label.leftAnchor.constraint(equalTo: headerView.leftAnchor).isActive = true
label.rightAnchor.constraint(equalTo: headerView.rightAnchor).isActive = true
label.centerYAnchor.constraint(equalTo: headerView.centerYAnchor).isActive = true
label.heightAnchor.constraint(equalToConstant: 25).isActive = true
return headerView
}
答案 6 :(得分:1)
如果您使用titleForHeaderInSection
,那么最简单的方法是添加viewDidLoad():
self.tableView.backgroundColor = UIColor.clear
出于某种原因,在Interface Builder的View部分中为InterfaceView设置ClearColor for Background并不总是将其设置为透明。但是在代码中添加这一行(至少对我来说)确实如此。
答案 7 :(得分:1)
Swift 4解决方案。
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView:UIView = UIView()
headerView.backgroundColor = UIColor.lightGray
return headerView
}
答案 8 :(得分:0)
这会为您应用中的所有标题更改它:
UITableViewHeaderFooterView.appearance().backgroundColor = theme.subViewBackgroundColor
答案 9 :(得分:0)
覆盖viewForHeaderInSection并创建UITableViewHeaderFooterView
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
var headrview = tableView.dequeueReusableHeaderFooterView(withIdentifier: "aaa")
if headrview == nil {
headrview = UITableViewHeaderFooterView(reuseIdentifier: "aaa")
}
let bview = UIView()
bview.backgroundColor = Theme.current.navigationColor
headrview?.backgroundView = bview
headrview?.textLabel?.textColor = Theme.current.primaryTextColor
return headrview
}
答案 10 :(得分:0)
快速5
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
guard let headerView = view as? UITableViewHeaderFooterView else { return }
headerView.backgroundView?.backgroundColor = .red
}
并且,如果您希望每个部分使用不同的标题背景(和/或文本)颜色:
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
guard let headerView = view as? UITableViewHeaderFooterView else { return }
switch section {
case 0:
headerView.backgroundView?.backgroundColor = .red
headerView.textLabel?.textColor = .white
case 1:
headerView.backgroundView?.backgroundColor = .green
headerView.textLabel?.textColor = .white
case 2:
headerView.backgroundView?.backgroundColor = .yellow
headerView.textLabel?.textColor = .black
// etc
default:
return
}
答案 11 :(得分:0)
快捷键4 更改背景颜色和文本颜色:
// Assumes storage is an instance of the AngularFireStorage service
this.storage.getDownloadURL('/thumbs/imagename.jpg')
.subscribe(path => {
this.imgSrc = path;
});
答案 12 :(得分:0)
快速 5 iOS 13 :
//Remove 'override' if you don't override from UITableviewController
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
guard let headerView = view as? UITableViewHeaderFooterView else { return }
headerView.tintColor = .clear //use any color you want here .red, .black etc
}
答案 13 :(得分:0)
我们可以使用以下代码段在tableView的一部分中更改页脚颜色。
调用方法heightForFooterInSection
func tableView(_ tableView:UITableView,heightForFooterInSection部分:Int)-> CGFloat { 返回5.0 }
调用方法viewForFooterInSection
func tableView(_ tableView:UITableView,viewForFooterInSection部分:Int)-> UIView? { 让viw = UIView(frame:CGRect(x:0,y:0,width:tableView.frame.width,height:5)) viw.backgroundColor = .white 回归 }
希望这会对您有所帮助。这是经过测试的代码。
答案 14 :(得分:0)
如果您具有自定义标题视图,则可以使用contentView.backgroundColor
来实现。
答案 15 :(得分:0)
不需要使用诸如 willDisplayHeaderView 方法或其他方法的技巧。
只需创建您自己的 UITableViewHeaderFooterView 类。
然后在 func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?
中返回您创建的自定义标题视图。您不应该直接为标题视图更改背景颜色,而是为标题视图的 contentView 更改背景颜色 ?
let headerView = tableView.dequeueReusableHeaderFooterView(withIdentifier: NotificationSettingsHeaderView.reuseIdentifier) as! NotificationSettingsHeaderView
headerView.label.text = dataSource.snapshot().sectionIdentifiers[section].title
headerView.contentView.backgroundColor = .red
return headerView
更好的是在标题视图子类的 init
中设置背景颜色
答案 16 :(得分:-1)
覆盖或实现功能tableview will display
public func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
let headerView = (view as? UITableViewHeaderFooterView)
headerView?.tintColor = .clear
}