我使用自動佈局與UIScrollView
來顯示對象的某些屬性。我從網絡服務中免費下載這些信息。 scrollview有一個不變的寬度(因爲我不想有垂直滾動行爲),它的子視圖用一組約束來尊重這個寬度,但是我不能動態增加UILabel
的高度。使用Autolayout在UIScrollView中動態UILabel高度
我的代碼一切,我用viewDidLoad
選擇創建子視圖...
- (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;
.
.
.
}
你可以看self.detailContentScrollView
變量,這是從視圖控制器的筆尖創建的IBOulet
。
然後我用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]];
.
.
.
}
最後,當我收到的Web服務的信息,我送sizeToFit
的UILabel
從滾動視圖選擇和layoutIfNeeded
。但我的UILabel
從來沒有調整自己的新內容。我究竟做錯了什麼?
這是對這個問題的另一個功能的解決方案,謝謝。 – specktro
檢查這個職位的完整實施:http://arielelkin.github.io/articles/uilabel-plus-uiscrollview-plus-autolayout/ – Eric
@Eric:鏈接關閉。 – testing