旋转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(地图会自动完成)。您可能已尝试手动将其居中以解决高度问题,但修复自动调整掩码应消除显式居中的需要。

+0

好的,谢谢 - 应该已经读过国旗名称,直到它结束:)而关于居中:我实际上是针对不同点的中心,而不仅仅是取决于用户输入的用户位置。但是,谢谢你指出这一点... – Axel