2016-09-28 5 views
3

Ich frage mich, ob jemand das Problem hat, dass MKMapView (Oder vielleicht bezieht sie sich auf viele andere Ansichten?) Hat eine seltsame Sache, wo sie standardmäßig auf 1000x1000 Größe ich das erste Mal einen Bildschirm laden . Wenn ich zu einem anderen Bildschirm übergehe und zum Kartenbildschirm zurückwechsle, verfolgt er tatsächlich alle meine Beschränkungen.MKMapView standardmäßig 1000x1000 in Xcode8

passieren Das ist nicht mit Xcode7 und ich frage mich, ob jemand weiß, in Xcode8 oder etwas ein bekannter Fehler ist da?

MapKitView erhalten programmatisch geladen und wird als Subview in meiner Ansicht hinzugefügt, die die Einschränkungen hat.

MKMapView *mapkitView = [[MKMapView alloc] initWithFrame:self.aConstrainedView.frame]; 
[self.mapkitView setDelegate:self]; 
[self.mapkitView setShowsUserLocation:YES]; 
[self.mapkitView setRotateEnabled:NO]; 
[self.aConstrainedView addSubview:self.mapkitView]; 

Könnte dies zu Autoresizing issue in Xcode 8 zusammenhängen?

+0

was ist genau das Prob? – vaibhav

+0

Das Problem ist, dass die Karte nicht folgt die Größe der übergeordneten Ansicht. Untersuchung mit der "Debug View Hierarchie" zeigte, dass die MKMapView hatte eine Größe von 1000x1000 und war außerhalb der Grenzen der übergeordneten Ansicht .. –

+0

setzen Sie die Rahmengröße von mapView in Inside-Programm siehe meine ans .. – vaibhav

Antwort

1

Ihre initialiser sollten die bounds seine Superview verwenden, nicht die frame:

MKMapView *mapkitView = [[MKMapView alloc] initWithFrame:self.aConstrainedView.bounds]; 

einen Haltepunkt auf dieser Linie und im Debugger Verwendung:

(lldb) po self.aConstrainedView.bounds 

die Breite und Höhe, um sicherzustellen, sind richtig. Wenn Sie die Kartenansicht in viewDidLoad hinzufügen, ist das zu früh. Sie sollten außer Kraft setzen:

- (void)viewDidLayoutSubviews { 
    dispatch_once(
     // Add map view here 
    ); 
} 

und Ihren Code hinzufügen, dass es in, wie die aufgerufen wird, nachdem Ihr Subviews haben alle aus gelegt nach Ihren Einschränkungen.

+0

Für mich war das Hinzufügen der Kartenansicht in ViewDidLoad der Fall. Ich habe es zu der vorgeschlagenen Lösung verschoben und es einmal gesendet. –

+0

Es kann nur über Code behoben werden. Was ist mit Storyboard und Einschränkungen? –