zoukankan      html  css  js  c++  java
  • CALayer02-创建新图层

    1、KVC可以做到很精确,key中属性的获取:Window—>Documentation and API Reference—>搜索CATransform3d下面的CATransform3d key paths

    表格中的属性不需要背,只要知道rotation:旋转  scale:缩放  translation:平移就可以了,没事的时候一个个试试

     会出现一个表格,表格的左边是KVC中key中transform.后面所跟的属性

        //value为数值对象的话,需要包装为NSNumber对象
        [self.testIamgeView.layer setValue:@(0.5) forKeyPath:@"transform.scale.y"];
    
        //value为结构体的话,需要包装为NSValue对象
        [self.testIamgeView.layer setValue:[NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_4, 1, 1, 0)] forKeyPath:@"transform"];

    2、UIView创建的时候,本身就会自动创建一个layer对象,我们也可以自己创建一个图层layer对象

     //新建layer
        CALayer *layer = [CALayer layer];
        layer.backgroundColor = [UIColor redColor].CGColor;
        layer.bounds = CGRectMake(0, 0, 100, 100);
        //position属性layer有,view是没有的
        layer.position = CGPointMake(200, 100);
        layer.cornerRadius = 10;
        layer.masksToBounds = YES;
        //将UI类型转为CG类型,CG是C语音类型,转为id(OC类型)需要进行强换
        //固定写法
        layer.contents = (id)[UIImage imageNamed:@"111.png"].CGImage;
        [self.view.layer addSublayer:layer];

    3、layer使用CGColor而不是用UIColor的原因,关于CALayer的疑惑

    •首先

    CALayer是定义在QuartzCore框架中的
    CGImageRef、CGColorRef两种数据类型是定义在CoreGraphics框架中的
    UIColor、UIImage是定义在UIKit框架中的
     
    •其次
    QuartzCore框架和CoreGraphics框架是可以跨平台使用的,在iOS和Mac OS X上都能使用
    但是UIKit只能在iOS中使用
     
    •为了保证可移植性,QuartzCore不能使用UIImage、UIColor,只能使用CGImageRef、CGColorRef

    QuartzCore如果用了UIKit的东西,代表QuartzCore只能用在IOS中,就不可以使用在Mac OS X上了,所以QuartzCore只能用CoreGraphics,这样保证可移植性,iOS和Mac都可以使用。

    4、UIView和CALayer的选择

    •通过CALayer,就能做出跟UIImageView一样的界面效果
    •既然CALayer和UIView都能实现相同的显示效果,那究竟该选择谁好呢?
    其实,对比CALayer,UIView多了一个事件处理的功能。也就是说,CALayer不能处理用户的触摸事件,而UIView可以
    所以,如果显示出来的东西需要跟用户进行交互的话,用UIView;如果不需要跟用户进行交互,用UIView或者CALayer都可以
    当然,CALayer的性能会高一些,因为它少了事件处理的功能,更加轻量级
     
    5、position和anchorPoint
    •CALayer有2个非常重要的属性:position和anchorPoint
    •@property CGPoint position;
    用来设置CALayer在父层中的位置
    以父层的左上角为原点(0, 0)
     
    •@property CGPoint anchorPoint;
    称为“定位点”、“锚点”
    决定着CALayer身上的哪个点会在position属性所指的位置
    以自己的左上角为原点(0, 0)
    它的x、y取值范围都是0~1,默认值为(0.5, 0.5)
     
     
     
     
     
  • 相关阅读:
    linux_java_同时启动三个项目脚本
    Python 项目-飞机大战_02.飞机大战-2
    Python 项目-飞机大战_01.飞机大战-1
    Mysql为什么要使用视图?
    Python语法基础_10.加强练习
    Python语法基础_09.面向对象3、异常、模块
    crontab--设置周期性被执行的指令
    面试者应向公司问什么问题?
    简单的触发黑名单阻断演示 control+c
    SetConsoleCtrlHandler演示
  • 原文地址:https://www.cnblogs.com/yipingios/p/4498306.html
Copyright © 2011-2022 走看看