我从景观方向呈现模态视图时遇到了奇怪的问题。只需从一个新的基于视图的应用程序开始并执行以下操作,就可以解决该问题:


创建一个将显示的新的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中实现以下内容来解决了这一问题。这假定一个名为CGRectframe_实例变量。

- (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_];
}


我会说这是一个错误。

10-08 05:32