自定义view中的layoutSubview与drawRect简单总结

-(void)layoutSubviews{}方法说明:
当我们自定义view时(系统view无法更改),如果我们的view中有子view,怎么办?往哪里写布局?那么就是去重写这个方法。而以下的几种情况也是说这个自定义view中的布局何时被触发:
1、[self setNeedsLayout]
手动加入需要布局的标志,在将来需要重新布局的时候,调用[self layoutIfNeed]来进行重新布局;所以这两个方法是配合使用的。
2、addSubview会触发layoutSubviews
当自定义的Viewiew加入到某个父view中时,调用addSubview时,那么这个view布局自动触发;
3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化
自动触发;
4、滚动一个UIScrollView会触发layoutSubviews
自动触发;
5、旋转Screen会触发父UIView上的layoutSubviews事件
自动触发。
综合以上,只有第一个是我们可以手动去进行调用重新布局的方式。
另外,在自定义view中还有另外的一个经常用来重写的方法-(void)drawRect:(CGRect)rect{}。这个方法与上一个方法不同,这个不是用来布局子view的,而是将整个view当成一个画布进行绘制这个view,所以如果
涉及到布局的时候,我们不会重写这个方法。与layoutSubviews所相似的是,这个方法也是不能直接调用的,有以下的两个方法来进行view的重绘:
-(void)setNeedsDisplay
-(void)setNeedsDisplayInRect:(CGRect)invalidRect{}
以上的2个方法能够直接触发drawRect方法,只是一个要求全部重回,而另一个只要求重绘一部分;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值