iOS sizeToFit和sizeThatFits

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容