我正在使用 iOS 8 新的自适应“Present As Popover”功能。我在 StoryBoard 中连接了一个简单的 segue 来进行演示。它在 iPhone 6 Plus 上效果很好,因为它将视图显示为弹出框,而在 iPhone 4s 上则显示为全屏视图(表格样式)。
问题是当显示为全屏视图时,我需要在视图中添加一个“完成”按钮,以便可以调用dismissViewControllerAnimated。当它显示为弹出框时,我不想显示“完成”按钮。
我尝试查看presentationController 和popoverPresentationController 的属性,但我找不到任何可以告诉我它是否实际显示为弹出框的信息。
NSLog( @"View loaded %lx", (long)self.presentationController.adaptivePresentationStyle ); // UIModalPresentationFullScreen
NSLog( @"View loaded %lx", (long)self.presentationController.presentationStyle ); // UIModalPresentationPopover
NSLog( @"View loaded %lx", (long)self.popoverPresentationController.adaptivePresentationStyle ); // UIModalPresentationFullScreen
NSLog( @"View loaded %lx", (long)self.popoverPresentationController.presentationStyle ); // UIModalPresentationPopover
AdaptivePresentationStyle 总是返回 UIModalPresentationFullScreen,presentationStyle 总是返回 UIModalPresentationPopover
在查看 UITraitCollection 时,我确实发现了一个名为“_UITraitNameInteractionModel”的特征,它仅在实际显示为 Popover 时设置为 1。但是,Apple 不提供通过 popoverPresentationController 的 traitCollection 直接访问该 trait。