1, sizeThatFits返回的大小都是一样的。 不会改变原来的label的view的size
CGSize expectedSizeMessage = [messageLabel sizeThatFits:CGSizeMake(30, 5)];
CGSize expectedSizeMessage3 = [messageLabel sizeThatFits:CGSizeZero];
CGSize expectedSizeMessage4 = [messageLabel sizeThatFits:CGSizeMake(1000, 1000)];
//可以计算字符串的size
+ (CGSize)sizeStr:(NSString *)str forFont:(UIFont *)font size:(CGSize)size mode:(NSLineBreakMode)lineBreakMode {
UILabel *label = [UILabel new];
label.text = str;
label.lineBreakMode = lineBreakMode;
label.font = font;
label.numberOfLines= 0;
CGSize size1= [label sizeThatFits:size];
CGSize size2 = [str sizeForFont:font size:size mode:lineBreakMode];
NSLog(@"%@, %@", NSStringFromCGSize(size1), NSStringFromCGSize(size2));
return size1;
}
2,sizeToFit//返回的大小跟上面的相同。会立即改变label的size
[messageLabel sizeToFit];
CGSize expectedSizeMessage2 = messageLabel.bounds.size;
使用这两个方法必须先给label赋值。