在 sectionHeader 中自动调整字体大小

Posted

技术标签:

【中文标题】在 sectionHeader 中自动调整字体大小【英文标题】:Auto resize font in sectionHeader 【发布时间】:2018-07-18 12:22:24 【问题描述】:

我想在我的 Tableview 的 sectionHeader 中显示一个名称和一些其他简短信息。

有些名字非常大,所以不适合,有没有办法像在标签中一样自动调整 sectionHeader 中的字体大小:

label.adjustsFontSizeToFitWidth = true;

【问题讨论】:

【参考方案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()
    
    

【讨论】:

以上是关于在 sectionHeader 中自动调整字体大小的主要内容,如果未能解决你的问题,请参考以下文章

在 Swiftui 的 Text() 中自动调整字体大小?

自动调整大小时 UITextField 字体粗细变化

自动调整不同设备字体大小的最佳方法?

POI如何自动调整Excel单元格中字体的大小

WPF 自动调整字体大小,直到它适合父控件

在 RubyXL 上自动调整字体大小