2016-04-08 3 views
0

Jetzt arbeite ich an einem alten Projekt, Client möchte Update für dieses Projekt hinzufügen.Ich neu hinzugefügt eine ViewController für die Anzeige mapview, aber diese Mapview kann nicht auf dem Bildschirm wie iphone6, etc.This Anwendung verwendet Autoresizing für die Größenänderung verschiedener Ansichten. Ich habe Autoresize-Eigenschaft für passen die Mapview auf dem Bildschirm Ich habe versucht, sowohl programmatisch und xib.Aber es funktioniert nicht.Wie kann ich dieses Problem lösen? Bitte helfen Sie mir.Wie kann ich die Kartenansicht mit Autoresizing in iOS anpassen?

_mapView.autoresizesSubviews = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth; 

oder

Autoresizing property for Mapview

enter image description here

enter image description here

+0

Haben Sie versucht, Frame von Mapview programmatisch zu setzen ?. Überprüfen Sie auch, ob die Eigenschaft "Teilansichten abhören" und "Teilansicht automatisch autorisieren" von mapview aktiviert ist. –

+0

Clip Subviews "und" Autoresize Subview "sind immer überprüft. Ich habe mapview direkt zu Interface Builder nicht programmatisch hinzugefügt. – IKKA

+0

Versuchen Frame of Mapview programmatisch setzen. [YourMapView setFrame: self.view.bounds]; –

Antwort

0

Sie sollten Auto-Layout verwenden und Einschränkungen festgelegt.

Auto-Layout ist der Standard jetzt so, wenn Sie noch mit Streben arbeiten wollen und Federn Sie müssen es aus der Datei Inspektoren des .xib auszuschalten:

turning off auto layout from file inspector

0

Da mit autoLayout nicht ist Da es sich bei der Option um ein altes Projekt handelt und die Migration eine riesige Aufgabe ist, empfehle ich Ihnen dringend, den Rahmen für das mapView über den Code festzulegen.

Zum Beispiel hat die Ansicht gemäß dem bereitgestellten Screenshot eine Suchleiste, die oben bleibt und die mapView muss den gesamten freien Speicherplatz belegen, der übrig ist. Sie können es Code wie folgt:

  1. erstellen Auslässe für das mapView und searchBar
  2. Set Rahmen des mapView wie

    CGSize superViewFrameSize = self.view.bounds.size; 
    CGSize searchBarFrameSize = self.searchBar.bounds.size; 
    CGRect mapviewFrame = CGRect mapviewFrame = CGRectMake(0, searchBarFrameSize.height, superViewFrameSize.width, superViewFrameSize.height - searchBarFrameSize.height); 
    self.mapView.frame = mapviewFrame; 
    

Der Code nimmt die Größe des superView und searchBar und hält es in temporären Variablen. Dann erstellen Sie eine CGRect Variable, um den neuen Rahmen des mapView zu halten. Platzieren Sie die mapView unterhalb der searchBar, indem Sie ihren Ursprung als die Höhe der searchBar festlegen. Stellen Sie die Breite von mapView so ein wie die der superView. Stellen Sie Höhe mapView als die reduzierte Höhe des searchBar von seinem superView ein.

Hoffe das hilft :)