我有一个带有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将按预期旋转,但用户位置不会居中,而是位于屏幕底部(距离顶部的距离与纵向模式相同)。
我希望它能够居中,但是......
有什么想法吗?
答案 0 :(得分:4)
尝试在setAutoresizingMask:
中包含高度,以便当超视图在旋转时更改其高度时,地图视图的高度将自动更改。现在,只有宽度调整大小,因此地图中心的y位置不会改变。
所以这一行:
[myMapView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
应该是:
[myMapView setAutoresizingMask:
(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
此外,如果要将跟踪模式设置为MKUserTrackingModeFollow
(地图将自动执行此操作),则无需手动将地图置于用户位置中心。您可能已尝试手动居中以修复高度问题,但修复自动调整遮罩应消除对显式居中的需要。