2017-03-09 6 views
0

Ich füge ein benutzerdefiniertes Markierungsfenster mit dem folgenden Code hinzu und funktioniert gut..Aber kann ich die Höhe Breite nicht dynamisch entsprechend der Subviews Breite einstellen.Größe Xib dynamisch ändern

func mapView(_ mapView: GMSMapView, markerInfoWindow marker: GMSMarker) -> UIView? { 

     let customInfoWindow = Bundle.main.loadNibNamed("CustomMarker", owner: self, options: nil)?[0] as! CustomMarker 
     return customInfoWindow 
    } 

Der Blick ist wie unten

enter image description here

Das Problem ist, wie/wo die Höhe des xib so anzupassen, dass sie als die Größe der Innenbeschriftung zunimmt?

Antwort

0

Die Antwort hängt davon ab. Verwenden Sie automatisches Layout?
Wenn Sie es verwenden, legen Sie möglicherweise einige Einschränkungen fest (nachdem Sie es als Unteransicht hinzugefügt haben), die das Wachstum der Ansicht blockieren.
Wenn Sie AL verwenden, ist die Größe einer Ansicht aufgrund ihrer inneren Inhaltsgröße, diese Größe kann von der Art der Ansicht, die Sie verwenden, abweichen.
Bei einer Beschriftung mit der Anzahl der Zeilen, die auf 0 gesetzt sind, und der maximalen, die mit einer festgelegten Zahl festgelegt wird, wird die Größe des Inhalts durch die Beschriftung so festgelegt, dass der gesamte Inhalt angezeigt wird.
Wenn dieses Label so eingestellt ist, dass 4 Constraints an seinen Superview angeheftet sind, verschiebt das Label die Superview-Größe und behält die Constraint als gültig.
Wenn Sie kein automatisches Layout verwenden, sollten Sie die Elemente -sizeToFit aufrufen und die Höhe manuell berechnen und den Rahmen für die Containeransicht anpassen.

+0

Ja, ich benutze autolayout.Ich habe nur Einschränkungen auf alle Größe auf Subviews von Xib gesetzt, um die Superview-Größe zu erhöhen, aber die Superview dh Xib-Datei selbst wächst nicht, wie die Subviews Größe steigt .. Wie kann ich die max bevorzugt einstellen width..i versuchte in Größe Inspektor und es funktioniert nicht –

Verwandte Themen