【问题标题】:ios resize scrollview by containerview with tavleview insideios通过容器视图调整滚动视图的大小,其中包含表格视图
【发布时间】:2018-06-08 07:49:31
【问题描述】:

我有下一个视图结构:

vc
-view
--safe area
--scrollview
---view
----containerview1
----containerview2
----containerview3
-----tableviewcontroller(in containervew3)

Tableviewcontroller 具有添加或删除行的按钮,我想调整滚动视图的大小以显示完整的 tableview 内容(不滚动 tableview)。我试图解决这样的问题:来自hereSizing a Container View with a controller of dynamic size inside a scrollview 但没有成功。我使用 iOS 10.0&swift

【问题讨论】:

    标签: ios swift uiscrollview size uicontainerview


    【解决方案1】:

    首先是约束。您必须对UIScrollView 和容器的视图有适当的约束

    接下来您需要的是tableviewController 的高度约束(您可以将高度设置为 0,关系大于等于 750 优先级,因此如果发生错误,约束永远不会中断)

    当您的数据插入/删除发生时,采用该高度约束的 IBOutlet,您的内容大小将更改并将该 contentsize 高度应用于 IBOutlet 约束的常量,并且不要忘记 layoutIfNeeded。

    让你的 tableview 滚动反弹为 false

    创建protocol 通知容器视图高度变化

    protocol ContainerTableDelegate {
          func dataChanged(height: CGFloat)
     }
    

    当高度变化时通知父视图控制器

        delegate?.dataChanged(self.heightConstraint.constant)
    

    现在在你拥有所有容器的主视图控制器中

    实现

     override func prepare(for segue: UIStoryboardSegue, sender: Any?) 
    

    identify ViewController set delegate to self实现delegate并改变容器视图3的高度常量(你也需要这个)

    希望对解决您的问题有所帮助

    【讨论】:

    • 感谢 Prashant Tukadiya 的回复,但不幸的是,容器视图并没有改变它的大小,我也尝试通过 multiply 、委托工作、约束集、layoutIfNeeded 调用使​​其大于所需(我通过在应用新高度的函数中手动使滚动视图内容大小更大)我也尝试添加 tableviewController.view.translatesAutoresizingMaskIntoConstraints = false 但没有成功
    • @AntonLisitsyn 我已经创建了 UIView 并对其进行了高度限制。在那个视图中,我添加了容器视图。在某些按钮上,即使我正在更改高度约束的常量值,因此容器视图也会发生变化。所以它应该工作
    猜你喜欢
    • 2015-06-13
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 2019-09-29
    • 2016-05-03
    相关资源
    最近更新 更多