• UIView 和 CALayer 的区别和联系。


    1. 首先UIView可以响应事件,Layer不可以。

    UIKit使用UIResponder作为响应对象,来响应系统传递过来的事件并进行处理。UIApplication、 UIViewController、UIView、和所有从UIView派生出来的UIKit类(包括UIWindow)都直接或间接地继承自 UIResponder类。

    在 UIResponder中定义了处理各种事件和事件传递的接口, 而 CALayer直接继承 NSObject,并没有相应的处理事件的接口

    下面列举一些处理触摸事件的接口

    • – touchesBegan:withEvent:

    • – touchesMoved:withEvent:

    • – touchesEnded:withEvent:

    • – touchesCancelled:withEvent:

         2. UIView主要是对显示内容的管理而 CALayer 主要侧重显示内容的绘制,CALayer是绘图部分,UIView本身更像是一个CALayer的管理器,访问它的跟绘图和跟坐标有关的属性,例如frame,bounds等,实际上内部都是在访问它所包含的CALayer的相关属性。

      

         总结:    

    • 每个 UIView 内部都有一个 CALayer 在背后提供内容的绘制和显示,并且 UIView 的尺寸样式都由内部的 Layer 所提供。两者都有树状层级结构,layer 内部有 SubLayers,View 内部有 SubViews.但是 Layer 比 View 多了个AnchorPoint

    • 在 View显示的时候,UIView 做为 Layer 的 CALayerDelegate,View 的显示内容由内部的 CALayer 的 display

    • CALayer 是默认修改属性支持隐式动画的,在给 UIView 的 Layer 做动画的时候,View 作为 Layer 的代理,Layer 通过 actionForLayer:forKey:向 View请求相应的 action(动画行为)

    • 两者最明显的区别是 View可以接受并处理事件,而 Layer 不可以.

    使用UIView和CALayer都能实现动画效果,但是在真实的开发中,一般还是主要使用UIView封装的动画,而很少使用CALayer的动画。

    CALayer核心动画与UIView动画的区别:
    UIView封装的动画执行完毕之后不会反弹。即如果是通过CALayer核心动画改变layer的位置状态,表面上看虽然已经改变了,但是实际上它的位置是没有改变的。

     

    1.iOS中我们能看到的控件都是UIView的子类,比如UIButton UILabel UITextField UIImageView等等

          2.UIView能够在屏幕的显示是因为在创建它的时候内部自动添加一个CALayer图层,通过这个图层在屏幕上显示的时候会调用一个drawRect: 的方法,完成绘图,才能在屏幕上显示

          3.CALayer 本身就具有显示功能,但是它不能响应用户的交互事件,如果只是单纯的显示一个图形,此时你可以使用CALayer创建或者是使用UIView创建,但是如果这个图形想响应用户交互事件,必须使用UIView或者子类

    参考链接:http://blog.csdn.net/bsplover/article/details/7928994

                  http://www.cocoachina.com/ios/20150828/13244.html

  • 相关阅读:
    mavenjar 一些拉取不下来问题
    storm运行服务器一些错误解决、
    python操作excel库xlwings---3、写入excel常见操作
    python操作excel库xlwings---2、写入excel基本操作
    python操作excel库xlwings---1、课程介绍
    numpy库常用基本操作
    Numpy库使用总结
    python的xlwings库读写excel操作总结
    numpy中的ndarray与pandas的Series和DataFrame之间的相互转换
    Numpy和Pandas的区别
  • 原文地址:https://www.cnblogs.com/Crazy-ZY/p/5663233.html
Copyright © 2020-2023  润新知