2012-06-30 14 views
5

A volte i vincoli di autolayout si bloccano su un punto di ancoraggio sbagliato, ad esempio quando voglio che un controllo sia ancorato a un controllo sopra di esso e il vincolo di autolayout sia ancorato alla parte inferiore della finestra. C'è un modo per spostare il vincolo? Un'arte ASCII dovrebbe renderlo più chiaro. Questo è quello che ho:Posso spostare i vincoli di autolayout in Interface Builder?

+------------------------+ 
|      | 
| [x] Some checkbox  | 
|      | 
| [x] Another checkbox | 
|  |     | 
|  | ← autolayout  | 
|  | constraint  | 
|  |     | 
+-----+------------------+ 

E questo è quello che voglio, invece:

+------------------------+ 
|      | 
| [x] Some checkbox  | 
|  | ← A.C.   | 
| [x] Another checkbox | 
|      | 
|      | 
|      | 
|      | 
+------------------------+ 

posso ancorare il vincolo per la casella di controllo superiore spostando la casella in basso verso l'alto, ma non è questo quello che voglio , Voglio che lo spazio verticale sia più grande. (Le caselle di controllo sono solo a scopo illustrativo, il mio caso di utilizzo reale ha visualizzazioni diverse.)

risposta

7
  1. Select 2 caselle
  2. fare clic sull'icona "H" in in basso a destra del costruttore di interfaccia
  3. Selezionare spaziatura verticale

enter image description here


Ora seleziona i vincoli inutili ed eliminalo:

enter image description here

+0

+1 Mi hai appena salvato dalla follia. Ho faticato con un layout del libro Learn Cocoa on the Mac negli ultimi due ore e ho continuato a peggiorare le cose. Questo qui è esattamente ciò di cui avevo bisogno per risolvere i miei problemi. – MetalMikester

1

Prova a spostare la casella di controllo in basso in modo che diventi un montante tra sé e la casella sopra. Quindi fare clic sul puntone e fare clic sulla casella degli attributi nel pannello di destra. Qui dovrebbe essere possibile deselezionare la casella "standard" e impostarla sulla spaziatura desiderata.

1

No, non è possibile spostare un vincolo o modificarlo in relazione a una vista diversa. Come dice David Chu, è possibile spostare le viste finché non ottiene automaticamente il tipo di vincolo desiderato e quindi modificare il valore del vincolo per spostare la vista indietro dove si desidera. Tuttavia, puoi anche creare manualmente il vincolo che desideri e quindi eliminare quello automatico che non lo fai (a volte con qualche difficoltà). Ecco come funziona il tuo caso:

Seleziona le 2 caselle di controllo, quindi usa il menu Editor> Pin> Spaziatura verticale per aggiungere il vincolo desiderato (o usa il centro dei 3 pulsanti in basso a destra della vista di layout IB per ottenere lo stesso menu). A quel punto il vincolo automatico indesiderato dovrebbe diventare ridondante e passare da viola a blu. È quindi possibile selezionarlo ed eliminarlo. Ogni tipo di vincoli può essere creato utilizzando gli elementi nei menu Pin e Allinea.

Ho scoperto che ottenere i vincoli desiderati è sempre possibile, anche se è una battaglia contro i vincoli automatici che Xcode aggiunge, e talvolta un enigma per scoprire perché non si spostano dal viola al blu. Ad esempio, spostando direttamente una vista dopo aver aggiunto un vincolo personalizzato, scoprirai che Xcode ha probabilmente eliminato la maggior parte dei vincoli aggiunti e aggiunti di nuovo automaticamente, anche per altre viste apparentemente casuali all'interno della finestra, non solo quella che hai mosso! In bocca al lupo.

Problemi correlati