我应该如何以编程方式(和使用哪种方法)配置高度取决于其文本的UILabel?我一直在尝试使用Storyboard和代码的组合进行设置,但无济于事。设置sizeToFit
和lineBreakMode
时,每个人都建议numberOfLines
。但是,无论我将代码放在viewDidLoad:
,viewDidAppear:
还是viewDidLayoutSubviews
中,我都无法正常工作。我要么将框设置得太小而不能容纳较长的文本,否则它不会增长,或者我将其设置得太大而不会收缩。
最佳答案
请注意,在大多数情况下Matt's solution可以正常工作。但是,如果对您不起作用,请进一步阅读。
要使标签自动调整高度,您需要执行以下操作:
例如:
self.descriptionLabel = [[UILabel alloc] init];
self.descriptionLabel.numberOfLines = 0;
self.descriptionLabel.lineBreakMode = NSLineBreakByWordWrapping;
self.descriptionLabel.preferredMaxLayoutWidth = 200;
[self.descriptionLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];
[self.descriptionLabel setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];
[self.descriptionLabel setTranslatesAutoresizingMaskIntoConstraints:NO];
[self addSubview:self.descriptionLabel];
NSArray* constrs = [NSLayoutConstraint constraintsWithVisualFormat:@"|-8-[descriptionLabel_]-8-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(descriptionLabel_)];
[self addConstraints:constrs];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-8-[descriptionLabel_]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(descriptionLabel_)]];
[self.descriptionLabel addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[descriptionLabel_(220@300)]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(descriptionLabel_)]];
使用界面生成器
享受。 :)
关于ios - UILabel sizeToFit不适用于自动布局iOS6,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16009405/