大家好,又见面了,我是你们的朋友全栈君。
LayoutSubviews
子类可以重写此方法,因为需要更精确执行他们子视图的布局。只有当 autoresizing 和基于约束的行为的子视图不提供你想要的行为,应重写此方法。
该方法不应直接调用。如果你想要强制布局更新,下一次绘图更新之前 应当反向调用 setNeedsLayout 方法,如果您想要立即更新您的视图的布局,请调用 layoutIfNeeded 方法。
1直接调用setLayoutSubviews。
2 addSubview的时候。
3当view的frame发生改变的时候。
4滑动UIScrollView的时候。
5旋转Screen会触发父UIView上的layoutSubviews事件。
6改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件。
7.removeFromSuperview
PS: init初始化不会触发layoutSubviews
drawRect
1、如果在UIView初始化时没有设置rect大小,将直接导致drawRect不被自动调用。
2、该方法在调用sizeToFit后被调用,。
3、通过设置contentMode属性值为UIViewContentModeRedraw。那么将在每次设置或更改frame的时候自动调用drawRect:。
4、直接调用setNeedsDisplay,或者setNeedsDisplayInRect
PS: 重绘操作在drawRect方法中完成,不建议直接调用drawRect方法,当然调用此方法,结果没有任何效果的。我们调用UIView类中的setNeedsDisplay方法,则程序会自动调用drawRect方法进行重绘。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/159947.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...