我正在以模态方式展示一个视图控制器,并将其UIModalPresentationStyle
设置为自适应样式UIModalPresentationPopover
。这种风格在水平紧凑的环境(iPhone 纵向)中会出现在全屏上。在水平规则和垂直紧凑的环境(iPhone 6 Plus 横向)中,它将出现在表单中。在常规环境 (iPad) 中,它会显示为弹出框。这是期望的行为。
我需要以编程方式确定该控制器的实际显示方式 - 表单、全屏或弹出窗口。如何从正在呈现的视图控制器中确定这一点?
原因是我只需要在它不在弹出框内的情况下添加一个完成按钮。(或者在它位于弹出框的情况下隐藏它。)
创建视图控制器:
let viewController = ...
viewController.modalPresentationStyle = .Popover
let popoverController = viewController.popoverPresentationController
popoverController?.barButtonItem = settingsButton
presentViewController(viewController, animated: true, completion: nil)
在视图控制器内部:
- (void)viewDidLoad {
[super viewDidLoad];
//self.modalPresentationStyle is Popover even in the case where it's presented over the full screen
//self.popoverPresentationController is not nil even when presented full screen
}