旋转MKMapView

我有一个工作的应用程序与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]; 

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

我希望它能够集中在一起,不过……

有任何想法吗?

尝试在setAutoresizingMask:包含height setAutoresizingMask:这样当setAutoresizingMask:在旋转时更改其高度时,地图视图的高度将自动更改。 现在,只有宽度resize,因此地图中心的y位置不会改变。

所以这一行:

 [myMapView setAutoresizingMask:UIViewAutoresizingFlexibleWidth]; 

应该:

 [myMapView setAutoresizingMask: (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)]; 

此外,如果要将跟踪模式设置为MKUserTrackingModeFollow (地图将自动执行),则无需手动将地图置于用户位置中心。 您可能已尝试手动居中以修复高度问题,但修复自动调整遮罩应消除对显式居中的需要。