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賦值。