首页 > 解决方案 > ViewController 中两个 UIView 的动态高度

问题描述

我有以下 ViewController,里面有 3 个 UIView 和内容。红线是我的限制。

在此处输入图像描述

黑色的总是有一个固定的高度。

红色的 UIView 里面有一个 CollectionView,它会根据它的项目而增长。

绿色是一个 UITableView,它应该缩小,这取决于红色 UICollectionView 的大小。

我试图将红色(UICollectionView)的高度约束设置为大于或等于,将绿色(UITableView)的高度设置为小于或等于,但 Swift 告诉我设置 ax 或高度值。

在我的 ViewController 中获取两个动态视图的正确方法是什么?

标签: swiftxcodeios-autolayout

解决方案


为 CollectionView Height创建NSLayoutConstraint,然后在cellForItemAt函数上设置高度

var collHeight:NSLayoutConstraint? //In class scope

将 CollectionView 高度锚分配给 collHeight

collHeight = collectionView.heightAnchor.constraint(equalToConstant: 0)
collHeight!.isActive = true

然后在cellForItemAt函数上设置高度

   func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

        collHeight.constant = collectionView.contentSize.height
    }

它将根据项目数扩大collectionview高度的大小。接下来将tableview顶部锚点设置为collectionview底部锚点


推荐阅读