根据SWIFT中子视图的高度调整scrollview的高度

cmi*_*mii 5 uitableview uiscrollview ios autolayout swift

我有一个viewController,在scrollview中有一个tableview.

我需要以编程方式更新tableview的高度,然后滚动视图的高度(scrollview的高度取决于tableview的高度).

-my View Controller
  -View
    -ScrollView
      -Container View
        -TableView
Run Code Online (Sandbox Code Playgroud)

所以我在viewController的viewDidAppear中编写了这段代码:

 override func viewDidAppear(animated: Bool) {

    super.viewDidAppear(animated)

    var frame:CGRect = self.tableView.frame
    frame.size.height = tableView.contentSize.height
    self.tableView.frame = frame

    scrollView.contentSize=CGSizeMake(scrollView.frame.size.width, tableView.frame.origin.y + tableView.frame.height)

 }
Run Code Online (Sandbox Code Playgroud)

如果我在控制台中检查,则在所有cellForRowAtIndexPath之前调用viewDidAppear.在这种情况下,一切都按我的意愿运作.

在我的viewController中,我有一个打开modalViewController的按钮.在这个modalViewController中,我在tableview中添加了一个新数据(所以,一个新的单元格).

当我用dismissViewControllerAnimated关闭我的modalViewController时,会调用viewDidAppear但是在所有的cellForRowAtIndexPath之后.我的viewController没有正确显示,tableview被裁剪,我无法滚动到tableView的底部.我的代码不起作用.

我正在使用Swift和自动布局.

Rob*_*aff 0

尝试在视图控制器中调用它:

automaticallyAdjustsScrollViewInsets = false
Run Code Online (Sandbox Code Playgroud)

如果您愿意,也可以在 Interface Builder 中设置它