我通过工具栏上的按钮以编程方式显示弹出窗口。我在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 6 Plus和7 Plus模拟器运行相同的代码时,横向模式中的popover会显示为未知(和非预期的)锚点,如下所示:
在纵向模式下显示弹出框没有问题。任何解决的想法将不胜感激。