我从横向呈现模态视图时遇到了奇怪的问题。只需从新的基于视图的应用程序开始并执行以下操作即可重新创建该问题:
创建一个将要呈现的新UIViewController
子类。我命名为ModalViewController
。更改视图背景颜色以使错误更明显。
return YES;
shouldAutorotateToInterfaceOrientation:
在主视图中添加IBAction
以显示模式并将此操作挂钩到主视图控制器中的按钮。
- (IBAction)showModal {
ModalViewController *vc = [[ModalViewController alloc] initWithNibName:@"ModalViewController" bundle:nil];
[self presentModalViewController:vc animated:NO];
[vc release];
}
现在,当您从横向模式中单击按钮时,您应该会看到问题。整个视图向上和向左移动。
是否有其他人遇到此问题或有任何变通办法?我在iPad上遇到了类似的问题。
答案 0 :(得分: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_];
}
我想说这是一个错误。
答案 1 :(得分:0)
[self presentModalViewController:vc animated:YES];
尝试启用动画,而不是禁用动画。
答案 2 :(得分:0)
您使用的是什么autoresizing mask? (您将在XIB文件中进行设置。)看起来它没有附加到屏幕的右侧。
另外,您的视图是否考虑了状态栏的大小? (我注意到底部的间隙看起来与状态栏非常相似。)
您可以通过按视图标题栏上的箭头在Interface Builder中模拟大量此操作。