ios通过容器视图调整scrollview的大小,里面有tableview

问题描述 投票:1回答:1

我有下一个视图结构:

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个回答
0
投票

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

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

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

使您的tableview滚动反弹为false

创建protocol以通知容器视图有关高度变化的信息

protocol ContainerTableDelegate {
      func dataChanged(height: CGFloat)
 }

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

    delegate?.dataChanged(self.heightConstraint.constant)

现在在主视图控制器中,您拥有所有容器

实行

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

识别ViewController设置委托给self实现委托并更改容器视图3的高度常量(你还需要这个)

希望它有助于解决您的问题

© www.soinside.com 2019 - 2024. All rights reserved.