gsdios / SDAutoLayout

One line of code to implement automatic layout. 一行代码搞定自动布局!支持Cell和Tableview高度自适应,Label和ScrollView内容自适应,致力于做最简单易用的AutoLayout库。The most easy way for autoLayout. Based on runtime.
MIT License
5.9k stars 1.28k forks source link

文本计算cpu 的消耗 #177

Closed TuDoudong closed 7 years ago

TuDoudong commented 7 years ago

CGRect rect = [label.text boundingRectWithSize:CGSizeMake(MAXFLOAT, label.height_sd) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : label.font} context:nil];

文本计算消耗了大量的cpu 资源 达到1008x 请问有什么可以优化的

MrWilsonXu commented 7 years ago

CGSizeMake( MAXFLOAT , label.height_sd) 你太粗心了吧 width= MAXFLOAT

TuDoudong commented 7 years ago

然而这个是SD里面的计算方法。。。

MrWilsonXu commented 7 years ago

我瞧瞧

MrWilsonXu commented 7 years ago

CGRect rect = [label.text boundingRectWithSize:CGSizeMake(label.width_sd, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : label.font} context:nil]; 这才是人家的源码

MrWilsonXu commented 7 years ago

2017-03-31 4 26 57 你搞错了 我之前也遇到过 layout添加不正确 cpu会耗死

TuDoudong commented 7 years ago
2017-03-31 4 31 02

是这个方法,这个跟layout 添加方式没关系吧,都要进行处理的

TuDoudong commented 7 years ago

我明白了 if (view.sd_maxWidth && (model.rightSpaceToView || model.rightEqualToView)) { // 靠右布局前提设置 [self layoutAutoWidthWidthView:view model:model]; view.fixedWidth = @(view.width_sd); }

满足这些条件会调用这个方法的

MrWilsonXu commented 7 years ago

也就是说,以右边界为layout参考点,自动设置width

TuDoudong commented 7 years ago

非常感谢你的解答