我正在使用UINavigationController来管理我的UIViewControllers层次结构。对于其中一个UIViewController,我需要以编程方式更改其视图边界(取决于具体条件),所以我使用了setBounds并且它工作正常。
我的问题是:当我更改此视图边界时,然后将另一个UIViewController推送到UINavigationController堆栈,然后弹出最后一个UIViewController,我的边界更改将丢失。我想这是因为我的UIView被重绘了,但我认为边界修改仍然是实时的。
我可以在视图出现后再次更改我的UIView边界,但用户会注意到视图边界修改。
任何提示?这是一种常见的情况,还是因为我的UIView是从XIB加载而我错过了一个参数或其他东西?
谢谢:)
编辑:刚刚注意到我的UIView边界在将新的UIViewController推送到堆栈之前就已经改变了(在动画期间)
答案 0 :(得分:0)
您的观点可能具有自动调整设置。如果您不想这样,请将自动调整设置为0:
myView.autoresizingMask = 0;
答案 1 :(得分:0)
您可能希望在-viewWillAppear:
中完成所有边界设置(包括第一次)。这应该在你在初始推送和弹出案例中放入屏幕之前被调用。
答案 2 :(得分:0)
你在哪里改变界限?也许你应该把它放在viewWillAppear / didAppear这样的东西中,以便每次下一个View Controller弹出堆栈时都会改变边界?