OGeek|极客世界-中国程序员成长平台

标题: ios - 旋转 MKMapView [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 21:14
标题: ios - 旋转 MKMapView

我有一个带有显示用户位置的 MKMapView 的工作应用程序。到目前为止,一切顺利:

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

现在,我允许界面旋转:

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

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

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

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

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

有什么想法吗?



Best Answer-推荐答案


尝试在 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/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://sqlite.in/) Powered by Discuz! X3.4