Vincolo "Larghezza uguale all'altezza" in Interface Builder


93

Non riesco a trovare un modo per creare un vincolo "quadrato", che significa "larghezza uguale altezza" in Interface Builder. Immagino sia possibile aggiungere tale vincolo a livello di programmazione. C'è qualcosa che posso fare in IB? Forse semplicemente non lo vedo? Sembra banale, eppure non riesco a trovarlo.


Ricordo che Peter Ammon parlò di "Affidati il ​​più possibile a Interface Builder" in WWDC'12. Com'è ironico.
DemoniacDeath

4
Sì, penso che manchino ancora alcune cose nell'implementazione dei vincoli di layout. Sembra che ci abbiano dato accesso alla maggior parte dei parametri, ma non al moltiplicatore, che sarebbe utile per molte cose.
rdelmar

Ma sta migliorando sempre di più! Voglio dire, Auto Layout è stato introdotto meno di 3 anni fa e dal mio punto di vista il supporto è davvero buono al giorno d'oggi.
Lukas Kubanek

Risposte:


187

Aggiorna Xcode 5.1b5

la larghezza è uguale all'altezza

Ctrl + clic e trascina da una vista e rilascia mentre il puntatore si trova sopra la vista. Seleziona "Proporzioni". Creerà un vincolo in cui il primo e il secondo elemento sono la vista.


Prima di Xcode 5.1

Non puoi perché nell'editor di larghezza / altezza mancano i campi per fare riferimento a un'altra proprietà o impostare il rapporto:

vincolo di larghezza

Pertanto, non è possibile esprimere il codice seguente in Interface Builder:

CGFloat ratio = 1.0;
NSLayoutConstraint *constraint = [NSLayoutConstraint
    constraintWithItem:myView
    attribute:NSLayoutAttributeWidth
    relatedBy:NSLayoutRelationEqual
    toItem:myView
    attribute:NSLayoutAttributeHeight
    multiplier:ratio
    constant:0];
constraint.priority = 1000;
[myView.superview addConstraint:constraint];

1
Grazie per l'ultimo aggiornamento. Xcode 5.1 beta 5 consente effettivamente di impostare i vincoli delle proporzioni in IB, ma quando provo a compilare il progetto, ottengo il seguente errore: Vincoli delle proporzioni con versioni di Xcode precedenti alla 5.1 . Quindi forse dobbiamo aspettare la versione 5.1 finale. Lo stesso per te, @Jano?
Lukas Kubanek

Sì, le modifiche agli XIB non sono compatibili con le versioni precedenti. Se modifichi con 5.1 non puoi tornare a versioni inferiori.
Jano

Quindi sei in grado di compilare xib? Non funziona nemmeno con Xcode 5.1 beta 5 per me.
Lukas Kubanek

1
@ onmyway133 crea un vincolo tra le due viste e imposta il moltiplicatore su 1: 2.
Jano

3
In Xcode 7, ctrl + clic trascina dalla vista e rilascia sopra se stesso, quindi seleziona Proporzioni
inorganik

2

Aggiungi un nuovo vincolo, proporzioni a 1: 1 sull'elemento dell'interfaccia utente come nell'immagine.

Imposta il rapporto di aspetto su 1: 1


0

Per iniziare, trascina il controllo in diagonale dal pulsante a se stesso. Apparirà un menu contestuale, dove è possibile aggiungere vincoli di larghezza e altezza. Maiusc + clic su ciascuno; apparirà un segno di spunta che indica che hai aggiunto il vincolo. (Se chiudi accidentalmente la finestra di dialogo prima di aggiungerli entrambi, va bene, basta ripetere il passaggio di trascinamento e impostare l'altro):

inserisci qui la descrizione dell'immagine

Quando vengono aggiunti per la prima volta, questi vincoli assumono la larghezza e l'altezza correnti del pulsante, quindi sarà necessario regolare ciascun vincolo per assegnargli un valore più appropriato. Dovremo farlo uno alla volta, anche se la nostra immagine è quadrata, quindi assicurati di utilizzare lo stesso valore costante in entrambi i vincoli per ridimensionare il pulsante proporzionalmente. Fare doppio clic sul vincolo e immettere un valore inferiore nel suo campo costante:

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.