ios通过containerview和tavleview调整scrollview的大小

时间:2017-12-27 17:08:17

标签: ios swift uiscrollview size uicontainerview

我有下一个观点结构:

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

1 个答案:

答案 0 :(得分:0)

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

有适当的约束

你需要的下一件事是tableviewController的高度限制(你可以将高度设为0,关系大于等于750优先级,所以如果出现错误,约束永远不会破坏)

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

让你的桌面滚动反弹为假

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

protocol ContainerTableDelegate {
      func dataChanged(height: CGFloat)
 }

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

    delegate?.dataChanged(self.heightConstraint.constant)

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

实施

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

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

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