为啥 [UIViewController presentModalViewController:animated:] 从左侧过渡模态视图?
Posted
技术标签:
【中文标题】为啥 [UIViewController presentModalViewController:animated:] 从左侧过渡模态视图?【英文标题】:Why is [UIViewController presentModalViewController:animated:] transitioning the modal view in from the left?为什么 [UIViewController presentModalViewController:animated:] 从左侧过渡模态视图? 【发布时间】:2011-03-04 23:18:42 【问题描述】:我正在 ios 4.3 下的 iPad 上构建一个仅支持横向方向的应用程序,尽管该错误在 iOS 4.2 下也存在。
应用程序中的几个地方,我将UIViewController
s 显示为模态视图。所有这些都使用这种模式显示:
viewController.modalPresentationStyle = UIModalPresentationFormSheet;
viewController.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentModalViewController:viewController animated:YES];
在大多数地方,它们都按预期工作 - 模式表单从屏幕底部向上滑入。
但是,在两种情况下,模态表单会从屏幕的左下方滑入。表单几乎一直向右滑动,表单的底部不可见。如果您聚焦文本字段并显示屏幕键盘,表单将移动到您期望的屏幕顶部中心。
我不认为 XIB 的模拟指标会影响它们的行为,但我已将它们的方向(调用 UIViewController
self
和模态视图控制器 viewController
)设置为横向。
任何想法为什么这两个模态表单的行为与其他表单不同?
【问题讨论】:
你找到答案了吗...你能帮帮我吗?我正在努力解决这个问题,我在横向模式下在 SubView(ViewController) 中调用了这段代码。但是modalview像纵向模式一样从左侧出现,也就是全屏出现.....请...... 【参考方案1】:我认为你在这里应该在 shouldAutorotate 函数中返回横向,所以如果你想以横向左/右视图查看,请使用此代码:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationLandscapeRight||interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
// return YES;
试试这个可能对你有帮助..
【讨论】:
【参考方案2】:确保您在 NavigationController 中嵌入了 viewController,并且 navController shouldAutotorate 也设置为 Landscape
【讨论】:
以上是关于为啥 [UIViewController presentModalViewController:animated:] 从左侧过渡模态视图?的主要内容,如果未能解决你的问题,请参考以下文章
为啥UIView中引用了@UIViewController?
为啥 UIPopoverController 不是 UIViewController 的子类?
为啥 xcode 中 uiviewcontroller 的顶部有间隙?
为啥我们将 UIViewController 传递给 UINavigationController 类?
为啥 UIViewController 在 UINavigationBar 下扩展,而 UITableViewController 没有?