Sto cercando disperatamente di attaccare uno dei miei UILabels all'estremità destra della sua superview mentre la larghezza dell'etichetta è variabile (è un tempo quindi la cosa si sta ingrandendo e dovrebbe espandendo a sinistra, questo viene fatto usando sizeToFit all'interno dell'etichetta quando il testo è impostato).Come incollare UIView sul lato destro del suo superview a livello di codice
Finora ho provato un sacco di cose, ma più vicino ho avuto con:
_elapsedTimeRightConstraint = [NSLayoutConstraint constraintWithItem:_elapsedTimeView attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeRight multiplier:1.0 constant:-150];
Mentre l'etichetta viene inizialmente impostata su 150px di larghezza. Ma quando modifico la costante, tutto va all'inferno.
_elapsedTimeRightConstraint.constant = (_elapsedTimeView.frame.size.width * -1);
[self layoutIfNeeded];
Quindi la mia domanda è, come faccio align bordi d'uscita di una vista ed è superview (così si attacca a destra) quando la larghezza della visualizzazione secondaria è in continua evoluzione. Ho usato FLKAutoLayout
in altre parti del progetto, quindi se questo può essere fatto facilmente con questa struttura, allora la soluzione base di autolayout sarebbe incredibile !!!
Stai creando l'etichetta a livello di codice? In tal caso, assicurati di aver impostato 'translatesAutoResizingMaskIntoConstraints' su' NO'. In secondo luogo dovresti usare 'NSLayoutConstraintTrailing' invece di' NSLayoutConstraintRight' (e principale piuttosto che a sinistra) poiché questo rende il tuo layout funzionante nelle lingue di destra-sinistra. Non dovresti avere -150 per la costante vuoi solo 0 e non hai bisogno di modificare il vincolo perché le etichette regolano automaticamente le loro dimensioni intrinseche mentre il contenuto cambia. Infine, a meno che non stiate facendo qualcosa di superfluo, usate Interface Builder. È molto più facile che programmarlo – Paulw11