【问题标题】:tableHeaderView height by it's content won't work as it shouldtableHeaderView 的高度由它的内容将无法正常工作
【发布时间】:2018-12-14 09:31:36
【问题描述】:

我试图通过我放置在里面的UILabel 来设置tableHeaderView 的高度。但由于某种原因,我遇到了问题,高度小于标签的内容,有时标签不会显示全文。

看起来是这样的:

应该是这样的:

这是我的代码:

extension UITableView {
    public func relayoutTableHeaderView() {
        if let tableHeaderView = tableHeaderView {
            let labels = tableHeaderView.findViewsOfClass(viewClass: UILabel.self)
            for label in labels {
                label.preferredMaxLayoutWidth = label.frame.width
            }
            tableHeaderView.setNeedsLayout()
            tableHeaderView.layoutIfNeeded()
            tableHeaderView.frame.size.height = tableHeaderView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height
            self.tableHeaderView = tableHeaderView
            print(tableHeaderView.frame)
        }
    }
}

extension UIView {
    public func findViewsOfClass<T:UIView>(viewClass: T.Type) -> [T] {
        var views: [T] = []
        for subview in subviews {
            if subview is T {
                views.append(subview as! T)
            }
            views.append(contentsOf: subview.findViewsOfClass(viewClass: T.self))
        }
        return views
    }
}

这段代码的资源here

【问题讨论】:

    标签: ios swift uitableview autolayout constraints


    【解决方案1】:

    你没有使用 Number of lines to zero

        extension UITableView {
        public func relayoutTableHeaderView() {
            if let tableHeaderView = tableHeaderView {
                let labels = tableHeaderView.findViewsOfClass(viewClass: UILabel.self)
                for label in labels {
                    label.preferredMaxLayoutWidth = label.frame.width
                    label.numberOfLines = 0
                }
                tableHeaderView.setNeedsLayout()
                tableHeaderView.layoutIfNeeded()
                tableHeaderView.frame.size.height = tableHeaderView.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height
                self.tableHeaderView = tableHeaderView
                print(tableHeaderView.frame)
            }
        }
    }
    

    【讨论】:

    • 即使 numberOfLines 设置为 0,我仍有一些标签高度不正确...ibb.co/0X5Y7Ln
    • 你有没有用过自动布局?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 2017-10-20
    • 2016-10-24
    相关资源
    最近更新 更多