iOS-View Layout相关方法

相关方法

- (CGSize)sizeThatFits:(CGSize)size -

(void)sizeToFit
——————-

- (void)layoutSubviews

- (void)layoutIfNeeded

- (void)setNeedsLayout

——————–

- (void)setNeedsDisplay

- (void)drawRect

 

layoutSubviews调用的情况:

1.init初始化不会付出layoutSubviews,但是用initWithFrame初始化时,当rect不为.zero时,也会触发。

2.addsubViews会触发

3.设置view的frame时会触发,前提是frame和之前的frame不同

4.滚动UIScrollView会触发

5.旋转screen时会触发父UIView上的layoutSubviews

6.改变一个UIView的大小时会触发父UIView的layoutSubviews

layoutSubviews, 􏴋􏱙􏱚􏱈􏴚􏲷􏱣􏰈􏱜􏶏􏵑􏸏􏱽􏵏􏴆􏸟􏳸􏱟􏰫􏱡􏱢􏵑􏱊􏰥 􏵕􏴌􏳿􏰈􏵒􏽚􏵂􏰼􏳄􏰓􏱗􏱘􏳅􏶧􏱢􏱈􏴯􏶏􏱭􏳸subviews􏰈􏸟􏳸􏰫􏵂􏱛􏱢􏲶􏲙􏰥当我们在某个类的内部调整子视图位置时,需要调用。即如果你想要在外部设置subviews的位置,就不要重写。

刷新子对象布局

-layoutSubview:默认没有做任何事情,需要子类进行重写

-setNeedslayout:标记为需要重新布局,异步调用layoutIfneeded刷新布局,不会立即刷新,但一定会调用layoutSubviews

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

备注:setNeedsLayout方法并不会立马刷新,立即刷新需要调用layoutIfNeeded。

如果要立即刷新,要先调用[view setNeedsLayout],把标记设为需要布局,然后马上调用[view layoutIfNeeded]实现布局。

setNeedsLayout在receiver标上一个需要被重新布局的标记,在系统runloop的下一个周期自动调用layoutSubviews.

layoutIfNeeded  UIKit会判断该receiver是否需要layout,遍历的不是superview链,二十subviews

在视图第一次显示之前,标记总是“需要刷新”,可以直接调用[view layoutIfNeeded]。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值