1

我在从横向呈现模态视图时遇到奇怪的问题。只需从新的基于视图的应用程序开始并执行以下操作,即可重现该问题:

  1. 创建一个UIViewController将要呈现的新子类。我命名为 mine ModalViewController。更改视图背景颜色以使错误更加明显。

  2. return YES;在两个控制器中shouldAutorotateToInterfaceOrientation:

  3. 在主视图中添加一个IBAction以显示模式并将此操作连接到主视图控制器中的按钮。

    - (IBAction)showModal {  
      ModalViewController *vc = [[ModalViewController alloc] initWithNibName:@"ModalViewController" bundle:nil];  
      [self presentModalViewController:vc animated:NO];  
      [vc release];  
    }
    

现在,当您从横向模式单击按钮时,您应该会看到问题。整个视图向上和向左移动。

其他人遇到此问题或有任何解决方法吗?我在 iPad 上遇到了类似的问题。

替代文字

4

3 回答 3

1

在注意到视图中有正确的框架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_];
}

我会说这是一个错误。

于 2010-12-16T10:01:42.590 回答
0
  [self presentModalViewController:vc animated:YES];  

尝试启用动画,而不是禁用动画。

于 2010-12-16T08:34:11.377 回答
0

您使用的是什么自动调整大小的蒙版?(您将在 XIB 文件中进行设置。)看起来它没有附加到屏幕的右侧。

另外,您的视图是否考虑了状态栏的大小?(我注意到底部的间隙看起来与状态栏的大小非常相似。)

您可以通过按视图标题栏上的箭头在 Interface Builder 中模拟很多这种情况。

于 2010-12-16T10:08:35.333 回答