ios - 如何动态增加 ScrollView 的高度?

标签 ios swift3 uiscrollview

我在 ScrollView 中放置了一个表格 View 和一个 View ,如何根据表格 View 中的单元格数量以及内容 View 中存在的内容动态更改 ScrollView 的高度

最佳答案

您需要设置 ScrollView 的 contensize。 您可以通过适当的自动布局或以编程方式完成此操作

CGRect contentRect = CGRectZero;
for (UIView *view in self.scrollView.subviews) {
contentRect = CGRectUnion(contentRect, view.frame);
}
self.scrollView.contentSize = contentRect.size;

Swift 3

override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
var contentRect = CGRect.zero
     for view: UIView in scrollView.subviews {
        contentRect = contentRect.union(view.frame)  
     }
contentRect.size.height = contentRect.size.height + 20
scrollView.contentSize = contentRect.size
}

Swift 4

这是 Swift 4 中更简洁的版本。Swift 4 归功于此 ans

 extension UIScrollView {
    func updateContentView() {
         contentSize.height = subviews.sorted(by: { $0.frame.maxY < $1.frame.maxY }).last?.frame.maxY ?? contentSize.height
     }
 }

您可以在 Storyboard 中完成相同的操作。 有黑客来实现这一点。

  1. 根据要求将约束添加到 scrollview 的顶部、左侧、右侧和高度为 1000 或更多。您的 ScrollView 可能会超出您的 View Controller 本身的高度。

  2. 然后您可以在 ScrollView 底部和最后一个 subview (在您的情况下 View 包含 TableView 和 PaymentView)底部之间添加约束为 0 或 10。

3.您现在可以删除高度限制。

但在此之前确保 ScrollView 的所有 subview 之间的约束是正确的。

希望对您有所帮助。快乐编码!!

关于ios - 如何动态增加 ScrollView 的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44839101/

相关文章:

ios - 如何使用 Frank Cucumber 自动执行滑动/滚动手势?

objective-c - 将 Facebook 社交插件与 FB iOS SDK 连接

ios - 从顶部(如下拉菜单)隐藏的动画 TableView

ios - Swift 3.0 调用结果未使用

ios - Swift 中的条件编译

ios - 如何将 UIButton 粘贴到 UIScrollView 的底部? (Chatto 框架)

ios - 纵向时在主视图 Controller 中未调用SplitViewController和viewWillAppear的问题

android - 录音机播放器 Rails 移动友好

swift - arc4random Swift 3 语法

objective-c - 在 IB 和代码中添加项目时 UIScrollView 不滚动