iOS中setNeedsLayout与layoutIfNeede

2022-07-01  本文已影响0人  mr_ios_zhang

首先我们要弄明白这两个方法调用的时机:
layoutIfNeeded
对于已经标记刷新的布局,立即调用layoutSubviews进行布局(如果没有标记,不会调用layoutSubviews)。

setNeedsLayout
标记为需要重新布局,异步调用layoutIfNeeded刷新布局,不立即刷新,在下一轮runloop结束前刷新,layoutSubviews一定会被调用。

总结:
setNeedsLayout一定刷新,先对需要刷新的布局进行标记,但是存在延迟,底层其实也是调用layoutIfNeeded方法刷新。
layoutIfNeeded只有被标记刷新,才会去刷新。
[self setNeedsLayout];
[self layoutIfNeeded];

上一篇下一篇

猜你喜欢

热点阅读