在我的iOS 8应用程序中,这个弹出视图转场在所有设备的所有方向上都显示正确,除了iPhone 6 Plus横屏模式:
在iPhone 6 Plus横屏模式下它会变成这样(几乎从顶部拉伸到底部):
而且当它以这种方式显示时,点击视图外部不会将其关闭(尽管取消可以工作)。旋转回纵向即可恢复正常。
在这个
当调试
- po self.view: frame = (0 0; 250 394) - po self.preferredContentSize (width = 250, height = 160)
是什么导致视图的高度跳到394?
实际上,在iPhone 6 Plus横屏模式下,我还遇到了另一个弹出视图转场的相同问题。(以防有好奇心,我在这里使用VC而不是'UIAlertController',因为显示的
编辑以包括我的弹出代码:
此代码位于
![Good popover](https://istack.dev59.com/M63pU.webp)
![Bad popover](https://istack.dev59.com/rweR9.webp)
在这个
UIViewController
中的所有约束都被安装在所有大小类上。当调试
viewDidAppear:
中的值时,我看到以下内容:- po self.view: frame = (0 0; 250 394) - po self.preferredContentSize (width = 250, height = 160)
是什么导致视图的高度跳到394?
实际上,在iPhone 6 Plus横屏模式下,我还遇到了另一个弹出视图转场的相同问题。(以防有好奇心,我在这里使用VC而不是'UIAlertController',因为显示的
UITextField
的验证要求与UIAlertController
不兼容。)编辑以包括我的弹出代码:
此代码位于
prepareForSegue:
中。 FavoriteNameViewController *nameVC = segue.destinationViewController;
UIPopoverPresentationController *popPC = nameVC.popoverPresentationController;
popPC.delegate = self;
nameVC.delegate = self;
nameVC.view.center = self.originalContentView.center;
然后是委托方法:
- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller {
return UIModalPresentationNone;
}
以下是Xcode中segue的定义:
adaptivePresentationStyleForPresentationController:traitCollection:
和你之前实现的旧方法adaptivePresentationStyleForPresentationController:
是 _不同 的。 它们的行为完全不同。 它能够解决问题,而我的屏幕截图证明了这一点。 - matt