【问题标题】:Auto resize font in sectionHeader在 sectionHeader 中自动调整字体大小
【发布时间】:2018-07-18 12:22:24
【问题描述】:
我想在我的 Tableview 的 sectionHeader 中显示一个名称和一些其他简短信息。
有些名字非常大,所以不适合,有没有办法像在标签中一样自动调整 sectionHeader 中的字体大小:
label.adjustsFontSizeToFitWidth = true;
【问题讨论】:
标签:
ios
swift
uitableview
tableview
uitableviewsectionheader
【解决方案1】:
最简单的方法是在tableView(_:viewForHeaderInSection:)中创建一个UILabel
Apple Docu 讨论:
表格视图对节标题使用固定字体样式。如果
你想要一个不同的字体样式,返回一个自定义视图(例如,一个
UILabel 对象)在委托方法中
tableView(_:viewForHeaderInSection:) 代替。
【解决方案2】:
只需按照自定义标题视图的代码 -
-
设置表格视图
tableView.estimatedSectionHeaderHeight = 80 // You can change this value accordingly
tableView.sectionHeaderHeight = UITableViewAutomaticDimension
-
实现您的自定义部分标题并在委托方法中返回它
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
switch section {
case 0:
return sectionHeader
default:
fatalError("Unreachable code")
}
}
-
最后,如果在显示标题时标题部分中的内容发生了变化,则在更改后您将不得不告诉 tableView 使用重绘自身
func refreshTableAfterCellExpansion() {
self.tableView.beginUpdates()
self.tableView.setNeedsLayout()
self.tableView.endUpdates()
}