在滚动视图中更改UIView同时/更新滚动视图高度 - Swift 3 / Xcode 8

时间:2017-07-13 14:30:10

标签: ios swift3 xcode8

我有一个带滚动视图的普通ViewController。在滚动视图中有几个视图标签和一些按钮。以下所有内容均为 UIView 。每当按下其中一个按钮时, UIView 就会有多个视图控制器传入其中。传递到 UIView 的每个视图控制器都是不同的高度

要解释的图片:

enter image description here

如何调整滚动视图以使其适合从按下按钮传入的新视图控制器?

更新 这是我的代码:

 @IBAction func didPressTab(_ sender: UIButton) {


    let previousIndex = selectedIndex
    selectedIndex = sender.tag
    buttons[previousIndex].isSelected = false
    let previousVC = viewControllers[previousIndex]
    previousVC.willMove(toParentViewController: nil)
    previousVC.view.removeFromSuperview()
    previousVC.removeFromParentViewController()
    sender.isSelected = true
    let vc = viewControllers[selectedIndex]
    addChildViewController(vc)


    print("1. NEW VIEW HEIGHT \(vc.view.frame.height)")
    print("1. SCROLL VIEW HEIGHT \(scrollView.contentSize.height)")
    print("1. VIEW CONTROLLER HEIGHT \(self.view.frame.height)")
    print("1. CV HEIGHT \(contentView.frame.height)")
    contentView.layoutIfNeeded()
    height = vc.view.frame.size.height
    contentView.translatesAutoresizingMaskIntoConstraints = true
    contentView.frame.size.height = vc.view.frame.height
    vc.view.frame = contentView.bounds
    scrollView.contentSize.height = staticView.frame.height + height!
    contentView.addSubview(vc.view)



    print("2. NEW VIEW HEIGHT \(vc.view.frame.height)")
    print("2. SCROLL VIEW HEIGHT \(scrollView.contentSize.height)")
    print("2. VIEW CONTROLLER HEIGHT \(self.view.frame.height)")
    print("2. CV HEIGHT \(contentView.frame.height)")

    vc.didMove(toParentViewController: self)




}

我能够获得改变的高度,但它最终使得UIView的大小与普通VC(667)不同,这不是我需要的,因为有些ViewControllers的高度只有450。

2 个答案:

答案 0 :(得分:1)

只要嵌入式视图控制器发生更改,就必须重新计算滚动视图内容大小的高度。 新高度是图像视图高度+按钮容器高度+内容视图高度。 显然,您也必须调整容器视图的高度。

答案 1 :(得分:0)

我找到了解决方案!

<强>前言 视图控制器具有假定的大小。 (手机屏幕的大小)。这就是为什么每当我提出一个视图添加一个视图到UIView它总是667 - (iPhone 6屏幕大小)。所以为了解决这个问题我做了这个:

<强>代码:

element.all(by.repeater('item in items')).get(2).element(by.css('.item-name'));

这是放在IBAction内部的。在 vc 之后定义。