gpt4 book ai didi

ios - 动态tableHeaderView无法正常工作

转载 作者:行者123 更新时间:2023-11-30 10:55:33 25 4
gpt4 key购买 nike

我有一个 tableHeaderView,它应该根据其内容具有动态高度。

我尝试使用 systemLayoutSizeFitting 和 sizeToFit 方法来设置 TableView 的新高度,不幸的是,它似乎工作得很好,但不符合我的要求(其中一个动态 UI 被裁剪)。我尝试将我想要动态化的 UI 的内容压缩阻力优先级设置为 (1000),但它效果不佳......每次至少裁剪一个 UI。

view simulator output image

another simulator output image

@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var podView: PodView!
@IBOutlet weak var postCaption: UILabel!

var pod: Pod!

override func viewDidLoad() {
super.viewDidLoad()

//set header view
podView.setPod(image: pod.image, title: pod.title, description: pod.description, viewWidth: UIScreen.main.bounds.width)
podView.sizeToFit()
postCaption.text = pod.description
postCaption.sizeToFit()
let height = tableView.tableHeaderView!.systemLayoutSizeFitting(UIView.layoutFittingCompressedSize).height
tableView.tableHeaderView!.frame.size.height = height
}

编辑:约束:

view constraint

label Constraint

最佳答案

用于具有动态高度的TableHeaderView。将以下代码添加到您的 viewController 中。它会像魅力一样发挥作用。

override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()

if let headerView = tableView.tableHeaderView {
let height = headerView.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
var headerFrame = headerView.frame

//Comparison necessary to avoid infinite loop
if height != headerFrame.size.height {
headerFrame.size.height = height
headerView.frame = headerFrame
tableView.tableHeaderView = headerView
}
}
}

注意:确保您的 tableHeaderView 具有正确的 AutoLayout 约束以获得正确的高度。

关于ios - 动态tableHeaderView无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53985335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com