2

我有一个显示用户位置的 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 将按预期旋转,但用户位置不会居中,而是位于屏幕底部(与顶部的距离与纵向模式下的距离相同)。

我希望它是居中的,虽然......

有任何想法吗?

4

1 回答 1

4

尝试在中包含高度,setAutoresizingMask:以便当超级视图在旋转时更改其高度时,地图视图的高度将自动更改。现在,只有宽度在调整大小,所以地图中心的 y 位置不会改变。

所以这一行:

[myMapView setAutoresizingMask:UIViewAutoresizingFlexibleWidth];

应该:

[myMapView setAutoresizingMask: 
    (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];


此外,如果您将跟踪模式设置为MKUserTrackingModeFollow(地图会自动完成),则无需手动将地图置于用户位置的中心。您可能已尝试手动将其居中以解决高度问题,但修复自动调整蒙版应该消除显式居中的需要。

于 2012-06-05T02:11:19.180 回答