Высота tableHeaderView по содержанию не будет работать должным образом - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь установить tableHeaderView высоту на UILabel, который я поместил внутрь.Но по какой-то причине у меня есть проблемы с ним, высота меньше, чем содержание ярлыка, и иногда ярлык не отображает полный текст.

Вот как это выглядит:

enter image description here

Вот как это должно выглядеть:

enter image description here

Это мой код:

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
    }
}

Ресурс этого куска кода здесь .

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

אותה הבעיה אחי ... תגיד לי אם פתרת, но попытайтесь сделать приоритет стойкости к сжатию содержимого этого ярлыка необходимым (1000)

0 голосов
/ 14 декабря 2018

Вы не используете Количество строк в ноль

    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)
        }
    }
}
...