我无法动态添加多行UILabel。这是我得到的结果:
我希望“摘要”框中的标签自然换行。这是我用来添加标签的代码:
-(void)setSummary{
summaryContentLabel = [[UILabel alloc] init];
summaryContentLabel.numberOfLines=0;
summaryContentLabel.lineBreakMode=NSLineBreakByWordWrapping;
summaryContentLabel.text=self.summary;
summaryContentLabel.font=[UIFont fontWithName:@"Helvetica" size:13.0];
[summaryView addSubview:summaryContentLabel];
[summaryContentLabel setTranslatesAutoresizingMaskIntoConstraints:NO];
NSDictionary *views = NSDictionaryOfVariableBindings(summaryView,summaryContentLabel ,summaryLabel);
[summaryView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[summaryLabel]-5-[summaryContentLabel(==100)]-5-|" options:nil metrics:nil views:views]];
}
你会注意到书的标题包装我想要的方式没有问题。这是在IB中完成的。不幸的是,我必须在代码中添加此标签。自动布局也是一项要求。
答案 0 :(得分:2)
想出来。我需要为标签的宽度添加一个额外的约束,如下所示:
[summaryView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-[summaryContentLabel]-|" options:nil metrics:nil views:views]];
答案 1 :(得分:1)
可能是我迟到了,但无论如何我找到了解决办法。您需要为summaryContentLabel显式设置preferredMaxLayoutWidth。例如:
summaryContentLabel.preferredMaxLayoutWidth = 200;
我注意到如果你通过xib执行相同的视图布局,那么界面构建器会将preferredMaxLayoutWidth设置为正确的值。
答案 2 :(得分:-3)
将此代码用于多行标签: -
- (无效)setSummary {
summaryContentLabel = [[UILabel alloc] init];
summaryContentLabel.numberOfLines=0;
summaryContentLabel.textAlignment = UITextAlignmentLeft;
summaryContentLabel.font=[UIFont fontWithName:@"Helvetica" size:13.0];
[summaryView addSubview:summaryContentLabel];
CGSize size = [self.summary sizeWithFont:[UIFont fontWithName:@"Helvetica" size:13.0] constrainedToSize:CGSizeMake(240, 99999) lineBreakMode:UILineBreakModeWordWrap];
summaryContentLabel.frame=CGRectMake(72, 22, 240, size.height); //set the frame according to your need
summaryContentLabel.text=self.summary;
}
答案 3 :(得分:-4)
您实际上并未向UILabel设置帧大小。你可以随时做:
CGRectMake(10, 10, 280, 9999);
对于高度,然后确保它正确适合而不是9999的高度设置:
[summaryContentLabel sizeToFit];