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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios通过容器视图调整scrollview的大小,里面有tableview相关的知识,希望对你有一定的参考价值。

我有下一个视图结构:

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

答案

首先是约束。你必须对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的高度常量(你还需要这个)

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

以上是关于ios通过容器视图调整scrollview的大小,里面有tableview的主要内容,如果未能解决你的问题,请参考以下文章

iOS:使用自动布局保持视图彼此按比例调整大小

(自动布局)容器视图调整大小但子视图不

在 UITableView 上方调整 UIView 的大小

如何根据动态内容调整 textview 和 scrollview 内容大小

在不自动调整大小的情况下确定 UIView 容器大小

SwiftUI:调整 ScrollView 的边界