Ho una vista che contiene solo un UILabel. Questa etichetta contiene testo multilinea. Il genitore ha una larghezza variabile che può essere ridimensionata con un gesto pan. Il mio problema è che quando eseguo questo ridimensionamento, UILabel non ricalcola l'altezza in modo tale che tutto il contenuto sia ancora visibile, semplicemente lo interrompe.Autolayout iOS: problema con UILabels in una vista genitore di ridimensionamento
sono riuscito a risolvere il problema con un po 'di un hack, ma è terribilmente lento per eseguire:
- (void)layoutSubviews {
CGSize labelSize = [self.labelDescription sizeThatFits:CGSizeMake(self.frame.size.width, FLT_MAX)];
if (self.constraintHeight) {
[self removeConstraint:self.constraintHeight];
}
self.constraintHeight = [NSLayoutConstraint constraintWithItem:self.labelDescription attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:labelSize.height];
[self addConstraint:self.constraintHeight];
[super layoutSubviews];
}
Non dovrebbe succedere automaticamente con autolayout?
EDIT
La struttura del mio punto di vista è:
UIScrollView
---> UIView
---> UILabel
Qui ci sono i vincoli sul UIScrollView:
<NSLayoutConstraint:0x120c4860 H:|-(>=32)-[DescriptionView:0x85c81c0] (Names: '|':UIScrollView:0x85db650)>,
<NSLayoutConstraint:0x120c48a0 H:|-([email protected])-[DescriptionView:0x85c81c0] priority:900 (Names: '|':UIScrollView:0x85db650)>,
<NSLayoutConstraint:0x120c48e0 H:[DescriptionView:0x85c81c0(<=576)]>,
<NSLayoutConstraint:0x120c4920 H:[DescriptionView:0x85c81c0]-(>=32)-| (Names: '|':UIScrollView:0x85db650)>,
<NSLayoutConstraint:0x120c4960 H:[DescriptionView:0x85c81c0]-([email protected])-| priority:900 (Names: '|':UIScrollView:0x85db650)>,
<NSLayoutConstraint:0x8301450 DescriptionView:0x85c81c0.centerX == UIScrollView:0x85db650.centerX>,
Ecco i vincoli sulla UIView:
<NSLayoutConstraint:0x85c4580 V:|-(0)-[UILabel:0x85bc7b0] (Names: '|':DescriptionView:0x85c81c0)>,
<NSLayoutConstraint:0x85c45c0 H:|-(0)-[UILabel:0x85bc7b0] (Names: '|':DescriptionView:0x85c81c0)>,
<NSLayoutConstraint:0x85c9f80 UILabel:0x85bc7b0.trailing == DescriptionView:0x85c81c0.trailing>,
<NSLayoutConstraint:0x85c9fc0 UILabel:0x85bc7b0.centerY == DescriptionView:0x85c81c0.centerY>
Lo stesso UILabel non ha vincoli su di esso, oltre a bloccarlo ai bordi della sua madre
Quali sono i tuoi limiti sull'etichetta e sul contenitore in cui si trova? – larsacus
Vincoli aggiunti al post originale – simon
Quindi l'unico vincolo che hai impostato sull'etichetta è che riempie il suo contenitore sia in orizzontale che in verticale? Il testo si interrompe quando il contenitore ha una dimensione specifica o taglia sempre il testo indipendentemente dalla grandezza del contenitore? – larsacus