Sto utilizzando l'autolayout con UIScrollView
per mostrare alcuni attributi di un oggetto. Scarico queste informazioni dinamicamente dal servizio web. La vista a scorrimento ha una larghezza costante (perché non voglio avere un comportamento di scorrimento verticale) e le sue visualizzazioni secondarie rispettano questa larghezza con un gruppo di vincoli, ma non posso aumentare dinamicamente l'altezza di UILabel
.Altezza UILabel dinamica all'interno di UIScrollView con caricamento automatico
codice che ho tutto e io uso viewDidLoad
selettore per creare subviews ...
- (void)viewDidLoad {
[super viewDidLoad];
.
.
.
UILabel *descriptionLabel = [[UILabel alloc] initWithFrame:CGRectZero];
descriptionLabel.translatesAutoresizingMaskIntoConstraints = NO;
descriptionLabel.numberOfLines = 0;
descriptionLabel.lineBreakMode = NSLineBreakByWordWrapping;
descriptionLabel.opaque = YES;
descriptionLabel.backgroundColor = [UIColor clearColor];
descriptionLabel.textColor = [UIColor whiteColor];
descriptionLabel.textAlignment = NSTextAlignmentRight;
descriptionLabel.font = [UIFont appetitoMediumItalicFontWithSize:15.0f];
descriptionLabel.text = NSLocalizedStringFromTable(@"APT_DISH_DETAIL_DESCRIPTION", @"DishDetail", @"Etiqueta que contiene la descripción del platillo");
[descriptionLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];
[self.detailContentScrollView addSubview:descriptionLabel];
self.descriptionLabelS = descriptionLabel;
.
.
.
}
È possibile guardare la variabile self.detailContentScrollView
, questo è un IBOulet
creata dal pennino in vista del controllore.
allora io uso il selettore di updateConstraints
...
- (void)updateConstraints {
[super updateConstraints];
// This dictionary has more variables, ok
NSDictionary *viewsDict = @{@"dish_description_label": self.descriptionLabelS};
.
.
.
[self.descriptionLabelS setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];
[self.detailContentScrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-[view1][dish_description_label]-[view2][view3][view4]-|" options:0 metrics:nil views:viewsDict]];
.
.
.
}
e alla fine, quando ricevo informazioni del servizio web, io mando sizeToFit
s' UILabel
di selezione e layoutIfNeeded
dal ScrollView. Ma il mio UILabel
non si ridimensiona mai con il nuovo contenuto. Che cosa sto facendo di sbagliato?
Questa è stata un'altra soluzione funzionale per il problema, grazie. – specktro
Controlla questo post per un'implementazione completa: http://arielelkin.github.io/articles/uilabel-plus-uiscrollview-plus-autolayout/ – Eric
@Eric: il collegamento non funziona. – testing