UI更改仅适用于viewDidAppear?

时间:2017-06-02 21:06:45

标签: ios

我手动更改自定义UINavigationBar子类中UINavigationController的高度。出于某种原因,当我添加代码以改变viewDidAppear函数中的高度时,条形图的高度被正确更改,但是当我尝试将代码放入viewDidLoad时,没有任何反应。以下是我的表现:

class PetNavigationVC: UINavigationController {

    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func viewDidAppear(_ animated: Bool) {
        let bounds = self.navigationBar.bounds
        self.navigationBar.frame = CGRect(x: 0, y: 0, width: bounds.width, height: 74)

    }
}

有人能帮我理解为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

正如评论中所提到的,在viewDidLoad方法中,甚至没有计算约束,除了你的类值之外什么都没有加载。另外,向viewDidLoad添加代码也有点棘手,因为用户可以看到demant上正在发生的事情:D

您应该在viewWillAppear func或方法DidLayoutSubviews中调整您的框架或任何与UI相关的内容......