iOS面试 - layoutSubViews & drawRects

本文详细探讨了iOS开发中`layoutSubviews`和`drawRect`两个关键方法的触发条件及使用注意事项。`layoutSubviews`会在视图添加、frame改变、UIScrollView滚动等情况下被调用;而`drawRect`则在初始化、大小调整、contentMode设置为UIViewContentModeRedraw时自动调用。强调drawRect不能手动调用,需通过setNeedsDisplay系列方法触发,并且在该方法中进行绘图操作。
摘要由CSDN通过智能技术生成

layoutSubviews

  • init 初始化不会触发 layoutSubviews ;

  • addSubview 会触发 layoutSubviews ;

  • 设置 view 的 frame 会触发 layoutSubviews,前提是 frame 的值设置前后发生了变化;

  • UIScrollView 滚动会触发 layoutSubviews ;

  • 旋转 Screen 会触发父 UIView 上的 layoutSubviews ;

  • 改变一个 UIView 大小的时候也会触发父 UIView 上的 layoutSubviews ;

  • 直接调用 setLayoutSubviews ;

drawRect

  • 如果在 UIView 初始化时没有设置 rect 大小,将直接导致 drawRect 不被自动调用;

  • 在 Controller->loadView, Controller->viewDidLoad 两方法之后会掉用 drawRect ;

  • 在调用 sizeToFit 计算出 size 后系统会自动调用 drawRect: 方法;

  • 通过设置 contentMode 属性值为 UIViewContentModeRedraw。那么将在每次设置或更改 frame 的时候自动调用 drawRect: ;

  • 直接调用 setNeedsDisplay,或者 setNeedsDisplayInRect: 触发 drawRect:,但是有个前提条件是 rect 不能为 0。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值