ios - 旋转 MKMapView

标签 ios ios5 mkmapview uiinterfaceorientation

我有一个正在运行的应用程序,其中有一个显示用户位置的 MKMapView。到目前为止,一切顺利:

- (void)viewDidLoad {
   ...
   [myMapView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
   [myMapView setUserTrackingMode:MKUserTrackingModeFollow animated:YES];
}

现在,我允许界面旋转:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    // Return YES for supported orientations.
    return YES;
}

如果我现在将设备和中心转向用户位置

   [myMapView setCenterCoordinate:[myMapView userLocation].coordinate animated:YES];

map View 将按预期旋转,但用户位置不会居中,而是位于屏幕底部(距顶部的距离与纵向模式下相同)。

不过,我希望它能够居中......

有什么想法吗?

最佳答案

尝试在 setAutoresizingMask: 中包含高度,以便当 super View 在旋转时更改其高度时, map View 的高度将自动更改。现在,只有宽度正在调整大小,因此 map 中心的 y 位置不会改变。

所以这一行:

[myMapView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];

应该是:

[myMapView setAutoresizingMask: 
    (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];


此外,如果您将跟踪模式设置为 MKUserTrackingModeFollow,则无需手动将 map 以用户位置为中心( map 会自动执行此操作)。您可能已尝试手动将其居中以解决高度问题,但修复自动调整大小蒙版应该消除显式居中的需要。

关于ios - 旋转 MKMapView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10865945/

相关文章:

ios - 如何在mapVIew中添加多重标注

iphone - MKMapView ClipsToBounds 在 iOS 6 上不起作用

ios - 简单弹出窗口中的按钮

ios - 如何半屏和全屏播放 youtube 视频 (iOS 6,7)

ios5 - iCloud 使用 Magical Record 显示 "Encountered an error while trying to respond to the roll of the baseline"

ios - iPhone 和 iPad Storyboard需要多个 View Controller 吗?

ios - 将 MKMap 分解为图 block ——图 block 太小

ios - 在启动时显示自定义键盘

javascript - IOS 应用程序 webview SVG ClipPath 问题

ios - 使用钥匙串(keychain)提高 iOS 应用程序安全性