我有下一个观点结构:
vc
-view
--safe area
--scrollview
---view
----containerview1
----containerview2
----containerview3
-----tableviewcontroller(in containervew3)
Tableviewcontroller有添加或删除行的按钮,我想调整滚动视图的大小,它显示完整的tableview内容(不在tableview中滚动)。我尝试解决方案:来自here或Sizing a Container View with a controller of dynamic size inside a scrollview,但没有成功。我使用iOS 10.0& swift
答案 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的高度常量(您还需要这个)
希望它有助于解决您的问题