横向模式下的presentViewController宽度

Posted

技术标签:

【中文标题】横向模式下的presentViewController宽度【英文标题】:presentViewController width in landscape mode 【发布时间】:2017-03-08 12:35:29 【问题描述】:

在呈现视图控制器时,我希望它在 iPhone 移植模式下占据屏幕宽度/高度的 100%,但在横向模式下占据屏幕的一部分(像这样):

并且偏爱 iPad。以下代码执行除了 iPhone 横向部分之外的所有操作:

SQLProEditConnetionViewController * editConnectionViewController =
    [[SQLProEditConnetionViewController alloc] initWithConnectionModel: nil];

editConnectionViewController.delegate = self;

UINavigationController * navController =
    [[UINavigationController alloc] initWithRootViewController: editConnectionViewController];

navController.modalPresentationStyle = UIModalPresentationFormSheet;
navController.modalTransitionStyle   = UIModalTransitionStyleCoverVertical;
navController.preferredContentSize   = CGSizeMake(320, 620); // size of popup view

[self presentViewController: navController
                   animated: YES
                 completion: nil];

有什么想法可以让它在 iPhone 横向模式下正常工作吗?

【问题讨论】:

您可能希望使用容器视图来实现这一点,而不是仅仅在当前视图上显示UIViewController。查看来自 Apple 的文档:developer.apple.com/library/content/featuredarticles/…(尤其是使用 addChildViewController: 并将其框架设置为当前的 UIViewController)。 【参考方案1】:

在您的代码中更改: modalPresentationStyle

navController.modalPresentationStyle = UIModalPresentationFullScreen;

希望这会奏效...!!

【讨论】:

不,这仍然涵盖了所有内容,如下所示:i.imgur.com/JLrM2Vt.png。【参考方案2】:

在 iPhone 和 iPod touch 上,呈现的视图始终是全屏的。在 iPad 上,显示取决于 modalPresentationStyle 属性中的值。

【讨论】:

【参考方案3】:

原来我看到这个是因为 iPhone SE 模拟器。在较大的设备上,它可以按照我的意愿工作。

【讨论】:

以上是关于横向模式下的presentViewController宽度的主要内容,如果未能解决你的问题,请参考以下文章

横向模式下的 iPhone MPMoviePlayer

横向模式下的 TabBar 问题

横向模式下的启动屏幕

横向模式下的 UIScrollView 帧大小问题

纵向模式下的相机横向预览

横向模式下的 UINavigationController 后退按钮问题?