【问题标题】:Dynamic height of two UIView's in a ViewControllerViewController 中两个 UIView 的动态高度
【发布时间】:2020-03-10 10:50:42
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

  • 你试过stackView吗?
  • 我会的 - 谢谢!
  • 是的 ... stackView 可以解决您的问题
  • 如果不能解决请告诉我
  • @ProjektWeinheim - 集合视图旨在在您添加更多单元格时滚动其内容......它并非旨在扩大其大小。您可能需要重新考虑这种方法并使用自定义视图而不是集合视图。

标签: swift xcode ios-autolayout


【解决方案1】:

为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底部锚点

【讨论】:

  • 谢谢 Dilan,我明白了你的想法,我想它可能会奏效,但现在用另一种方式来创建标签。谢谢!
猜你喜欢
  • 2021-06-13
  • 2019-01-26
  • 2016-08-05
  • 2016-09-08
  • 2023-03-14
  • 2017-03-19
  • 2017-01-17
  • 2020-09-20
  • 1970-01-01
相关资源
最近更新 更多