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 に答える