我从景观方向呈现模态视图时遇到了奇怪的问题。只需从一个新的基于视图的应用程序开始并执行以下操作,就可以解决该问题:
创建一个将显示的新的UIViewController
子类。我将其命名为ModalViewController
。更改视图的背景色,使错误更明显。
两个控制器中的return YES;
shouldAutorotateToInterfaceOrientation:
在主视图中添加IBAction
以显示模式,并将此操作挂接到主视图控制器中的按钮上。
- (IBAction)showModal {
ModalViewController *vc = [[ModalViewController alloc] initWithNibName:@"ModalViewController" bundle:nil];
[self presentModalViewController:vc animated:NO];
[vc release];
}
现在,当您从横向模式单击按钮时,应该会看到问题。整个视图向上和向左移动。
其他人遇到此问题或有任何解决方法?我在iPad上遇到类似的问题。
最佳答案
注意到视图在viewDidAppear
中具有正确的帧并且在以后被弄乱了之后,我最终通过在ModalViewController
中实现以下内容来解决了这一问题。这假定一个名为CGRect
的frame_
实例变量。
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
frame_ = [[self view] frame];
[self performSelector:@selector(fixFrame) withObject:nil afterDelay:0];
}
- (void)fixFrame {
[[self view] setFrame:frame_];
}
我会说这是一个错误。