UIView automatische Größen Ressourcen
-
22-09-2019 - |
Frage
Ich arbeite auf der automatischen Größen eine benutzerdefinierte UIView und Apple hat sehr wenig dazu zu sagen. Was mehr ist, basierend auf SO Feedback, Dokumentation von Apple ist in einigen Bereichen tatsächlich falsch. Schließlich, obwohl es sechs Redimensionierung Komponenten in Interface Builder sind und sechs für setAutoresizingMask:
sie scheinen gar nicht zu Korrelat. Beispielsweise in der Breite IB Federeinstellung hat eine unterschiedliche Wirkung von dem autoresizingMask
zu UIViewAutoresizingFlexibleWidth
eingestellt wird, wenn das Gerät rotiert.
Gibt es gute Ressourcen für das Lernen, wie Ändern der Größe Arbeiten auf dem iPhone?
Edit:
verstehe ich die grundlegenden Konzepte von Apple wie contentMode verwendet, und ich habe durch die UIView Dokumentation lesen. Ich bin auf der Suche nach etwas, das ein wenig tiefer, was die IB-Einstellungen zu tun in Bezug auf die erklärt, was programmatisch im SDK verfügbar ist.
Lösung
autoresizingMask
zu UIViewAutoresizingFlexibleWidth
Einstellung entspricht die Breite Feder Einstellung sowie die linke und rechte Streben im Interface Builder (die Streben bedeuten, dass die Kante nicht flexibel). Wenn Sie das Verhalten nur die Einstellung der Breite Feder replizieren wollten, aber nicht die linke und rechte Streben, würden Sie Satz haben autoresizingMask
zu UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin
Andere Tipps
Ich fand diesen Beitrag hilfreich iOS automatische Größen zu verstehen.
http://www.techotopia.com/index.php/IOS_4_iPhone_Rotation,_View_Resizing_and_Layout_Handling
Von Apple:
... geben Sie den Wert dieser Maske durch die beschriebenen Konstanten Kombination in UIViewAutoresizing die C bitweise OR-Operator. Die Kombination dieser Konstanten können Sie festlegen, welche Dimensionen der Ansicht wachsen sollten oder schrumpft relativ zu dem Super. Der Standardwert dieser Eigenschaft ist UIViewAutoresizingNone, die, dass die Ansicht sein sollte, nicht angibt, überhaupt verkleinert.
... Zum Beispiel, nehme diese Eigenschaft die UIViewAutoresizingFlexibleWidth enthält und UIViewAutoresizingFlexibleRightMargin Konstanten aber nicht enthalten die UIViewAutoresizingFlexibleLeftMargin Konstante, was darauf hindeutet, dass die Breite des linken Randes der Ansicht festgelegt ist aber, dass die Auffassung der Breite und rechten Rand kann sich ändern. Somit scheint die Ansicht zu verankernden die linke Seite des Super sowohl während der Ansichtsbreite und der Zwischenraum rechts von der Ansicht zu erhöhen.
Wenn die automatischen Größen Verhaltensweisen bieten nicht das genaue Layout, dass Sie benötigen für Ihre Ansichten, können Sie eine benutzerdefinierte Container Ansicht und Überschreibung verwenden seine layoutSubviews Methode, um Ihre Subviews genauer zu positionieren.
Wenn Sie also nach oben und rechts neben seinem Super verankert Blick positionieren möchten, könnten Sie eine Maske anwenden wie:
[myView setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleBottomMargin];
Superview hat solche Parameter wie contentMode und autoresizesSubviews , Wich alle mit autoresizingMask seiner Subviews macht Ändern der Größe Verhalten
Lesen Sie aufmerksam http: // developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html
Für die Aufzeichnung verkratzt ich den Kopf für eine Stunde, weil meine einzeilige UILabel wäre einfach nicht auto-Schriftgröße anpassen, um fit zu Breite. Schließlich tat dies der Trick:
label.contentMode = UIViewContentModeScaleAspectFit;
ich gegoogelt und niemand scheint dieses Detail zu klären (jeder sagt Ihnen das Etikett sollte 1 Zeile, Satz adjustsFontSizeToFitWidth / minimumFontSize usw. sein). Vielleicht ist dieser Standardwert der Eigenschaft geändert? Ich bin auf iOS 4.3.