我有一个正在运行的应用程序,其中有一个显示用户位置的 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/