ios - 使用masonry布局以后UIlabel无法自动换行 设置了preferredMaxLayoutWidth属性
阿神
阿神 2017-04-18 09:39:14
0
0
1302

我使用了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,所以不可以省略问题,希望大家有经验的可以告诉我一下。谢谢了。

阿神
阿神

闭关修行中......

Antworte allen(0)
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage