iiOS 底层原理 - Uiview 与 Calyer 相关视图知识

本文探讨了iOS中UIView和CALayer的区别,指出UIView处理事件而CALayer负责渲染。UIButton和UILabel的父类分别为UIControl和UIView。同时,解释了如何暂停和恢复UIView动画,以及setNeedsDisplay和layoutIfNeeded在更新视图中的作用。了解这些有助于优化iOS应用的性能。
摘要由CSDN通过智能技术生成

图像显示原理

1. UIView 和 CALayer的区别

view是layer的代理对象;view负责管理layer,layer负责渲染;

view初始化的时候默认会创建一个layer;设置view的frame和bounds等内部其实是修改layer对应属性。

  1. 两者最明显的区别是View可以接受并且处理事件,而Layer不可以。
  2. 所有从UIView派生出来的UIKit类,都直接或者间接的继承自UIResponder类,所以都会有响应事件。
  3. 而CALayer直接继承NSObject,并没有相应的处理事件的接口。

总结:

  1. 每个UIView内部都有一个CALayer在背后提供内容的绘制和显示,并且UIView的尺寸样式都由内部的Layer所提供.两者都有树状层级结构,layer内部有SubLayers,View内部有SubViews,但是Layer比View多了个AnchorPoint
  2. 在View显示的时候,UIView作为Layer的CALayerDelegate,View的显示内容由内部的CALayer的display.
  3. CALayer是默认修改属性支持隐士动画的,在给UIView的Layer做动画的时候,View作为Layer的代理,Layer通过actionForLayer: forKey: 向View请求相应的action(动画行为)
  4. Layer内
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值