Heim > Fragen und Antworten > Hauptteil
我使用了masonry进行布局,然后我的label就无法自动换行了,我在网上找到很多资料和解决方法:
self.timeLabel = [[UILabel alloc]initWithFrame:CGRectZero];
self.timeLabel.textColor = [UIColor grayColor];
self.timeLabel.text = @"2016-09-22 09:05:12";
self.timeLabel.lineBreakMode = NSLineBreakByTruncatingTail;
self.timeLabel.numberOfLines = 0;
self.timeLabel.preferredMaxLayoutWidth = 80;
self.timeLabel.textAlignment = NSTextAlignmentCenter;
self.timeLabel.font = [UIFont systemFontOfSize:12];
[self.contentView addSubview:self.timeLabel];
- (void)layoutSubviews {
//1. 执行 [super layoutSubviews];
[super layoutSubviews];
//2. 设置preferredMaxLayoutWidth: 多行label约束的完美解决
self.timeLabel.preferredMaxLayoutWidth = 80;
[self.timeLabel setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisVertical];
//3. 设置preferredLayoutWidth后,需要再次执行 [super layoutSubviews];
//其实在实际中这步不写,也不会出错,官方解释是说设置preferredLayoutWidth后需要重新计算并布局界面,所以这步最好执行
[super layoutSubviews];}
但是执行以后并没有解决我的问题,label依然无法自动换行,因为是显示时间的label,所以不可以省略问题,希望大家有经验的可以告诉我一下。谢谢了。