私はMapViewでViewControllerを持っています。コントローラはストーリーボードで指定されたセグで初期化されます。 MapViewはコントローラ内のプロパティに(ストーリーボード経由で)接続されています。MKMapViewとviewDidLoad/viewWillAppear/viewDidストーリーボードを使用しています
.hファイル
@interface DetailViewController : UIViewController <MKMapViewDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *locationMapView;
私は特定の領域にのMapViewを中心にメソッドを使用しています:viewDidLoad
/viewWillAppear
からこのメソッドを呼び出す
- (void)centerMapView
{
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(CLLocationCoordinate2DMake(geoPoint.latitude, geoPoint.longitude), 1000, 1000);
[self.locationMapView setRegion:region animated:NO];
NSLog(@"size height: %f",self.locationMapView.frame.size.height);
NSLog(@"size width: %f",self.locationMapView.frame.size.width);
}
は、最初のために何もしませんビューが2度目にロードされるように正しく配置します。 ログ出力が常にある:viewDidAppear
に呼び出されたとき
size height: 0.000000
size width: 0.000000
のMapViewを中心にして、出力サイズは正しいです:
size height: 400.000000
size width: 320.000000
私はサイズの値は、ビューがまだで初期化されていないことを意味を推測viewDidLoad
/viewWill
が表示されますが、これは地域の設定に関する私の問題とは関係ありません。
MapViewの領域を実際にviewDidLoad
/viewWillAppear
に設定することができない場合は、ユーザーに地域の変更が表示されないことがあります。
アドバイスはありますか?
あなたはviewWillAppearでもこれを試したと言いましたか?そうでない場合は、そこで試してみてください。 –
私はこれを成功させずに試しました –