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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top