关于UIView的几个方法

参考链接layoutSubviews总结 - BSPLover的专栏 - 博客频道 - CSDN.NET

1.drawRect:方法

系统固定的方法。在view的内容发生改变的时候调用此方法可以对view进行重新绘制。不可以直接调用。通过setNeedDisplay 或者 setNeedsDisplay:方法可以调用该方法。

比较吃内存

在此方法内可以使用CoreGraphics对view进行绘制的一些基本操作。

2.layoutsubviews方法

作用:调整子视图的位置。(附:子视图的添加最好不要写在init方法中)

调用时机:

a:直接调用setLayoutSubviews。

b:addSubview的时候。

c:当view的frame发生改变的时候。

d:滑动UIScrollView的时候。

e:旋转Screen会触发父UIView上的layoutSubviews事件。

f:改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件。

如何手动调用该方法?

通过setNeedsLayout或者layoutIfNeed方法。

-setNeedsLayout方法: 标记为需要重新布局,异步调用layoutIfNeeded刷新布局,不立即刷新,但layoutSubviews一定会被调用

-layoutIfNeeded方法:如果,有需要刷新的标记,立即调用layoutSubviews进行布局(如果没有标记,不会调用layoutSubviews)


3.drawRect 和 layoutSubviews的区别?

前者是管理在视图上绘制的内容

后者是管理其子视图的相对位置信息

你可能感兴趣的:(关于UIView的几个方法)