Ich war in einer (wahrscheinlich falschen) Annahme, dass das Aktivieren des Indikators für den rechten Rand in xib der Verwendung von UIViewAutoresizingFlexibleLeftMargin
Insider-Code usw. entspricht.
Also habe ich nach diesem Schnappschuss gedacht:
Später heute musste ich nachprüfen und bin auf diesen Thread gestoßen .
Und auch die Apple-Dokumentation mit dem Titel "Abschnitt Automatische Behandlung von Layoutänderungen mithilfe von Regeln für die automatische Größenänderung" in diesem Link: https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/CreatingViews/ CreatingViews.html
Daher habe ich jetzt ein neues Konzept im Kopf, wie das programmgesteuerte Festlegen von Masken für die automatische Größenänderung den xib-Einstellungen entspricht:
Szenario 1 : Nur die Einstellung (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)
entspricht:
In XIB?
Szenario 2 : Die Einstellung (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin)
im Code entspricht:
In XIB?
Sind meine 2 erneuerten Szenarien korrekt? Bin ich gerade in meinem Verständnis?
quelle
Antworten:
Ja, Interface Builder hat es in gewissem Sinne "umgekehrt" (oder UIView, je nachdem, wie Sie es betrachten). Ihre zitierten "Szenarien" sind korrekt.
quelle
Ja, Sie haben die Dinge richtig zitiert. Ich stimme auch zu, dass es sich etwas rückwärts anfühlt, deshalb schätze ich Ihren Beitrag.
Möglicherweise
UIViewAutoresizingFlexibleMargins
möchten Sie ein Präprozessor-Makro verwenden, wenn Sie den Rand eines UIView in alle Richtungen flexibel gestalten möchten. Ich habe dies in die vorkompilierte Header-Datei eingefügt, damit es überall enthalten ist.Durch
UIViewAutoresizingFlexibleMargins
die Verwendung bleibt ein UI-Element zentriert, da es KEINE Seite umarmt. Um das Element wachsen / schrumpfen mit seinen Eltern, stellen dieUIViewAutoresizingFlexibleWidth
undUIViewAutoresizingFlexibleHeight
jeweils.Ich benutze es gerne,
UIViewAutoresizingFlexibleMargins
weil ich es später wie folgt referenzieren kann:anstatt
Allzu oft sehe ich diese Ränder in einer Zeile ODER wie im obigen Beispiel. Nur schwer zu lesen.
quelle
Durch Aktivieren des vertikalen / horizontalen Pfeils (Feder genannt) in der Box wird die Höhe / Breite flexibel. Durch Aktivieren einer Außenlinie (als Strebe bezeichnet) wird diese Seite jedoch unflexibel / nicht flexibel.
Das Aktivieren der äußeren linken Linie (linke Strebe) entspricht nicht dem Aktivieren
UIViewAutoresizingFlexibleRightMargin
. StattdessenUIViewAutoresizingFlexibleRightMargin
= auf , wenn rechte Strebe deaktiviert, ab , wenn rechte Strebe aktiviert.Es ist zunächst ziemlich verwirrend, aber wenn Sie genau hinsehen, gibt es einen Unterschied in den Federn und Streben. Ich weiß nicht, warum Apple dies getan hat, aber für mich gab es einige Fälle, in denen die Verwendung einfacher war. Die Verwendung entgegengesetzter Eigenschaften im Code ist noch verwirrender.
quelle
Swift 4 benutze dies
Ziel c
quelle