如何在 iOS 应用中使滚动视图高度动态化?

Posted

技术标签:

【中文标题】如何在 iOS 应用中使滚动视图高度动态化?【英文标题】:How to make scrollview height dynamic in iOS app? 【发布时间】:2016-07-28 20:16:51 【问题描述】:

这是我的结构:

-View
  -scrollview
    -view
      -stackview //main stackview
        -stackview1
          -label1
          -label2
        -stackview2
          -label1
          -label2
        -stackview3
          -label1
          -label2
        -stackview4
          -label1
          -label2
        -stackview5 // this is the dynamic vertical stackview
          -label1
          -label2 //this is the dynamic label
        -stackview6
          -label1
          -label2

我希望滚动视图基于 stackview5 是动态的。我将stackview5中的label2设置为0行。我还将分布设置为等间距。我还缺少什么?

【问题讨论】:

“动态”是什么意思? @matt 抱歉,我是说动态高度。 可以将stackview的大小固定为1,然后根据堆栈视图的数量计算contentSizescrollView 如果使用自动布局约束更新堆栈视图高度并且只需要强制更新滚动视图,为什么还需要设置内容大小,这不是解决问题吗? 为什么要关心滚动视图的高度?这是一个滚动视图!用户可以滚动查看它的任何部分。这就是重点。它的高度不必改变! 【参考方案1】:

我会使用 UITableView

六个 stackview 中的每一个都是他们自己的 tableViewCell

将此添加到您的 TableViewController 加载的视图中

self.tableView.estimatedRowHeight = 58.0 // whatever you want your default to be 
self.tableView.rowHeight = UITableViewAutomaticDimension

将此方法也添加到您的 TableViewController

override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat 
        return UITableViewAutomaticDimension

【讨论】:

我没有使用表格视图。它是一个滚动视图。 @pixie123 我知道。这就是为什么我说我会使用 TableView。这会让事情变得更容易。 我不知道性能方面有什么缺点。我得看看你现在的表现如何。好处是可以为您计算高度。

以上是关于如何在 iOS 应用中使滚动视图高度动态化?的主要内容,如果未能解决你的问题,请参考以下文章

IOS - 如何使用自动布局有一个可滚动的表格视图标题

如何动态调整滚动视图高度

如何动态增加滚动视图中两个表格视图的高度

UITableview 单元格高度在 iOS 14.0 中的滚动表视图上发生变化

如何在ios objective-c 应用程序中使屏幕的全部内容滚动

如何在滚动视图中使 UIImage 低于 UILabel 或 UITextView