旋转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
(地图将自动执行),则无需手动将地图置于用户位置中心。 您可能已尝试手动居中以修复高度问题,但修复自动调整遮罩应消除对显式居中的需要。