2015-02-20 6 views
24

Angenommen, ich verwende Interface Builder zum Erstellen von UI im Storyboard mit Auto Layout. Kann ich einige Einschränkungen von einer Ansicht in eine andere kopieren oder verschieben?Ist es möglich, Einschränkungen von einer Ansicht in eine andere zu kopieren?

+0

Während der Laufzeit oder mit IB? Welche Art von Einschränkungen? Bitte erläutern Sie, da es zu viele Fragezeichen gibt, um Ihnen zu helfen. Was ist dein Fall genau? – kedzia

+0

Ich habe meine Frage geklärt. – kelin

+0

naja ... wie wäre es, wenn du es versuchst? – LinusGeffarth

Antwort

10

Wenn Sie den Schnittstellen-Builder verwenden, werden einige Einschränkungen automatisch kopiert, wenn Sie cmd-c verwenden oder bearbeiten/kopieren: diejenigen, die die Hierarchie der Kopieransichten enthalten. Sonst, nein, das kannst du nicht. Kopieren Sie die gesamte Ansicht, wenn Sie die Einschränkungen beibehalten möchten.

+0

Vielen Dank für die Antwort, aber ich muss den Ansichtstyp im Interface Builder ändern. Deshalb frage ich, wie man Einschränkungen kopiert. Das Kopieren der Ansicht wird in meiner Situation nicht helfen. – kelin

+1

Das ist eine andere Frage, siehe meine Antwort hier: http: // stackoverflow.com/a/28626319/1758701 – iOSdev

+1

Ich änderte den Ansichtstyp, indem ich den Quellcode des Storyboards änderte. – kelin

12

Hier ist mein Hack, um alle Einschränkungen zu erhalten: Ich habe eine kleine Ansicht innerhalb meiner Hauptansicht, die ich auf einen anderen View-Controller kopieren möchte, um dies zu tun kopiere ich über die gesamte Hauptansicht in die neue Hauptansicht der Controller anzeigen. Ich ziehe dann meine kleine Ansicht (auf Seitenhierarchie) in die Hauptansicht meines neuen Controllers und lösche dann einfach die alte Hauptansicht, die ich nicht brauche. Auf diese Weise behalten Sie alle Einschränkungen für die Elemente in der kleinen Ansicht bei.

this helps :)

6

Sie können, wenn Sie verstehen und lernen, wie die XML der .xib Dateien funktioniert. Ich habe mich an sie gewöhnt, und so war ich in der Lage, eine Ansicht mit ihren Einschränkungen in eine andere Ansicht zu verschieben.

Ich werde versuchen, es Schritt für Schritt zu erklären:

  1. für sie einen Auslass erstellen: myView
  2. Rechtsklick auf die Datei .xib>Open As>Source Code oder öffnen Sie sie in einem anderen Editor (zB Sublime Text)
  3. Suchen myView und Sie finden so etwas wie:

    <outlet property="myView" destination="i5M-Pr-FkT" id="sfx-zR-JGt"/> 
    

    und kopieren Sie den Wert des destination Attribut

  4. die kopierte ID (i5M-Pr-FkT) Suchen und eines der Ergebnisse wird ein view Tag sein:

    <view contentMode="scaleToFill" id="i5M-Pr-FkT"> <!-- 1 --> 
        ... 
    </view> 
    
  5. Ausschneiden und Einfügen dieser ganze view Tag in der Ansicht der benötigten subviews tag:

    <view contentMode="scaleToFill" id="Ovp-8Y-qHZ"> <!-- 2 --> 
        <subviews> 
         <view contentMode="scaleToFill" id="i5M-Pr-FkT"> <!-- 1 --> 
          ... 
         </view> 
        </subviews> 
    </view> 
    
  6. für die kopierte ID Weiter Suche und Sie werden fin d einige Einschränkungen, die es haben mögen:

    <constraint firstItem="w7M-JQ-JWD" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="EwH-B1-XWY"/> 
    
  7. Sie müssen dies in den constraints Tag der kleinsten gemeinsamen Vorfahren beiden superviews bewegen (die alten und die neuen):

    <view contentMode="scaleToFill" id="rK2-sE-P0d"> <!-- 3 --> 
        <subviews> 
         <view contentMode="scaleToFill" id="Ovp-8Y-qHZ"> <!-- 2 --> 
          <subviews> 
           <view contentMode="scaleToFill" id="i5M-Pr-FkT"> <!-- 1 --> 
            ... 
           </view> 
          </subviews> 
         </view> 
        </subviews> 
        <constraints> 
         <constraint firstItem="w7M-JQ-JWD" firstAttribute="leading" secondItem="i5M-Pr-FkT" secondAttribute="leading" id="EwH-B1-XWY"/> 
        </constraints> 
    </view> 
    
+0

Große Antwort! Ich sehe, dass Sie nach "id" suchen, und was ist, wenn ich diese Ansicht kopieren, nicht schneiden und einfügen möchte? Ich nehme an, die ID sollte eindeutig sein. Sollte es durch bestimmte Regeln erzeugt werden, oder es wäre genug, um es zufällig zu ändern? – kelin

+0

Ja, die 'id' sollte für jede' .xib' Datei eindeutig sein, daher kann es nicht für eine 'view' und eine' constraint' gleich sein. Ich kann dir nicht garantieren, aber von dem, was ich gesehen habe, ist es völlig zufällig, aber um sicher zu sein, behalte es im selben Format: '3 Zeichen - 2 Zeichen - 3 Zeichen '. Sie können auch eine neue Ansicht hinzufügen, indem Sie sie entweder oben in der Ansichtshierarchie positionieren, so dass Sie sie einfacher finden, indem Sie die Datei vor dem Hinzufügen inszenieren, ihre ID kopieren, die Ansicht entfernen und diese verwenden "id". –

+0

Bitte akzeptieren Sie diese Antwort stattdessen, wenn es Ihnen geholfen hat, da das aktuelle nicht das erreicht, was Sie verlangt haben. –

Verwandte Themen