2016-03-23 11 views
0

Beim Arbeiten mit Interface Builder (egal welche Art von Dokument, Storyboard, View Controller, View usw.) gibt es ein Kontrollkästchen in der File Inspector an Use Auto Layout.Entspricht dem 'useAutolayout'-Flag im IB-Dokument bei reiner Codeverarbeitung

enter image description here

die Quelle eines leeren Dokument prüfen, sehen wir, dass es zu einer Fahne übersetzt useAutolayout genannt:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="6211" systemVersion="14A298i" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES"> 
    <dependencies> 
     <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6204"/> 
    </dependencies> 
    <objects> 
     <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/> 
     <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/> 
    </objects> 
</document> 

Was die äquivalent ist, wenn ohne Interface Builder arbeiten und rein Aufbau eine Benutzeroberfläche in Code?

Hinweis: Bitte beachten Sie, dass ich eine verwandte Frage here gepostet habe. Diese neue Frage zielt jedoch auf die Besonderheiten der technischen Details der Immobilie ab, während die erstere das Problem von einer höheren Ebene aus betrachtet, weshalb ich es für angebracht hielt, eine neue Frage zu posten, anstatt die andere zu aktualisieren.

Antwort

1

Es gibt keine Entsprechung als solche, da die XIB-Datei des Interface Builder eine Spezifikation enthält, die angibt, wie eine NIB-Datei erstellt wird, und das ist ein archivierter Satz von UI-Objekten. Wenn die UI-Objekte für die Verwendung von Integritätsbedingungen konfiguriert sind und mindestens eine Integritätsbedingung angegeben ist, verwenden Sie translatesAutoresizingMaskIntoConstraints, um zu entscheiden, was zur Laufzeit zu tun ist. Das Interface Builder-Flag führt effektiv eine Verarbeitung aus, um die archivierten Objekte zu aktualisieren, um dieses Flag festzulegen oder zu deaktivieren.

Also, im Code, wenn Sie Ihre eigenen Einschränkungen Hinzufügen müssen Sie auch

view.translatesAutoresizingMaskIntoConstraints = NO; 

deaktivieren Sie die alte Maske der automatischen Größen laufen aus Messing alles bis ...

+0

Und es muss sein Stellen Sie JEDE Ansicht ein, mit der Sie das automatische Layout verwenden. – NRitH