Possiedo un ViewController con MapView, il controller viene inizializzato da un passaggio specificato nello storyboard. MapView è connesso (tramite Storyboard) a una proprietà nel controller.MKMapView e viewDidLoad/viewWillAppear/viewDidAppear tramite Storyboard
file h
@interface DetailViewController : UIViewController <MKMapViewDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *locationMapView;
Sto usando un metodo per centrare il MapView a una regione specifica:
- (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);
}
chiamata a questo metodo da viewDidLoad
/viewWillAppear
non fa nulla per la prima tempo, ma lo centra correttamente per la seconda volta che viene caricata la vista. L'uscita Log è sempre:
size height: 0.000000
size width: 0.000000
Quando viene chiamato in viewDidAppear
è centrato il MapView e la dimensione di uscita è corretta:
size height: 400.000000
size width: 320.000000
Credo che i valori delle dimensioni significa che la vista non è ancora stato inizializzato in viewDidLoad
/viewWill
visualizzato, questo potrebbe non essere correlato al mio problema con l'impostazione della regione.
Mi chiedo, se davvero non è possibile impostare la regione di MapView in/viewWillAppear
in modo che l'utente non veda una modifica della regione.
Qualche consiglio?
Hai detto di aver provato questo in viewWillAppear? Altrimenti, provalo li dentro. –
L'ho provato senza successo –