旋转MKMapView
问题描述:
我有一个工作的应用程序与显示用户位置的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:
中包含高度,以便当超级视图在旋转时更改其高度时,地图视图的高度将自动更改。现在,只有宽度正在调整大小,所以地图中心的y位置不会改变。
所以这行:
[myMapView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
应该是:
[myMapView setAutoresizingMask:
(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
此外,你不应该需要手动中心在地图上的位置,用户如果要设置跟踪模式到MKUserTrackingModeFollow
(地图会自动完成)。您可能已尝试手动将其居中以解决高度问题,但修复自动调整掩码应消除显式居中的需要。
好的,谢谢 - 应该已经读过国旗名称,直到它结束:)而关于居中:我实际上是针对不同点的中心,而不仅仅是取决于用户输入的用户位置。但是,谢谢你指出这一点... – Axel