UIPopoverPresentationController在横向模式下在iPhone 6 plus和7 plus上的锚定位置错误

时间:2016-11-27 18:00:30

标签: objective-c xcode uipopovercontroller

我通过工具栏上的按钮以编程方式显示弹出窗口。我在Xcode 8.1上成功实现了它。

            _myMapViewController.modalPresentationStyle = UIModalPresentationPopover;

            switch ([[UIApplication sharedApplication] statusBarOrientation]) {
                case UIInterfaceOrientationPortrait:
                case UIInterfaceOrientationPortraitUpsideDown:
                    // Resize Popover
                    _myMapViewController.preferredContentSize = self.popoverSizeForPortrait;
                    break;
                case UIInterfaceOrientationLandscapeLeft:
                case UIInterfaceOrientationLandscapeRight:
                    // Resize Popover
                    _myMapViewController.preferredContentSize = self.popoverSizeForLandscape;
                    break;
                default:
                    //do nothing
                    break;
            }

            UIPopoverPresentationController *popoverPresentation = _myMapViewController.popoverPresentationController;
            [popoverPresentation setBarButtonItem:_mapButton];
            [popoverPresentation setPermittedArrowDirections:UIPopoverArrowDirectionDown];
            [popoverPresentation setDelegate:self];

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

以下是iPhone 7上的成功结果。您会在左下角看到一个地图的弹出窗口固定到指南针按钮。 iPhone 7 simulator in landscape

但是,当我使用iPhone 6 Plus和7 Plus模拟器运行相同的代码时,横向模式中的popover会显示为未知(和非预期的)锚点,如下所示: enter image description here

在纵向模式下显示弹出框没有问题。任何解决的想法将不胜感激。

0 个答案:

没有答案