UIView和-setBounds问题

时间:2009-12-30 16:06:31

标签: iphone objective-c uiview

我正在使用UINavigationController来管理我的UIViewControllers层次结构。对于其中一个UIViewController,我需要以编程方式更改其视图边界(取决于具体条件),所以我使用了setBounds并且它工作正常。

我的问题是:当我更改此视图边界时,然后将另一个UIViewController推送到UINavigationController堆栈,然后弹出最后一个UIViewController,我的边界更改将丢失。我想这是因为我的UIView被重绘了,但我认为边界修改仍然是实时的。

我可以在视图出现后再次更改我的UIView边界,但用户会注意到视图边界修改。

任何提示?这是一种常见的情况,还是因为我的UIView是从XIB加载而我错过了一个参数或其他东西?

谢谢:)

编辑:刚刚注意到我的UIView边界在将新的UIViewController推送到堆栈之前就已经改变了(在动画期间)

3 个答案:

答案 0 :(得分:0)

您的观点可能具有自动调整设置。如果您不想这样,请将自动调整设置为0:

myView.autoresizingMask = 0;

答案 1 :(得分:0)

您可能希望在-viewWillAppear:中完成所有边界设置(包括第一次)。这应该在你在初始推送和弹出案例中放入屏幕之前被调用。

答案 2 :(得分:0)

你在哪里改变界限?也许你应该把它放在viewWillAppear / didAppear这样的东西中,以便每次下一个View Controller弹出堆栈时都会改变边界?