首页 > 解决方案 > 设置 preferredContentSize 值似乎为时已晚

问题描述

我已经模态地展示了视图控制器,它打开了另一个视图控制器(我们称之为 secondVC)。根据设计,secondVC 的高度大于 firstVC,我尝试了很多方法来改变 secondVC 的大小,例如:

override var preferredContentSize: CGSize {
        get {
            return self.tableView.contentSize
        }
        set {}
    }

或者

    override func viewWillAppear(_ animated: Bool) {
        self.preferredContentSize = self.tableView.contentSize
    }

此外,我尝试在之前设置它:

let vc = SecondVC()
vc.preferredContentSize = CGSize(width: UIScreen.main.bounds.width, height: 500)
show(vc, sender: nil)

通过设置preferredContentSize,我的 secondVC 的高度发生了变化,但为时已晚,这个动画看起来很丑。

请帮忙!

标签: iosswiftuikit

解决方案


preferredContentSize是 UIContentContainer 协议的一部分,并且是 响应子视图控制器逻辑中的更改的一部分。资源

仅当 VC 具有父控制器(是容器视图的子视图)时,preferredContentSize才有效。您可以通过测试 VC 的“父”属性来检查它。


推荐阅读