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

时间:2015-01-01 22:01:42

标签: ios uitableview swift uiscrollview autolayout

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

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

-my View Controller
  -View
    -ScrollView
      -Container View
        -TableView

所以我在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)

 }

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

automaticallyAdjustsScrollViewInsets = false

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