文档章节

IOS--CALayer的介绍及使用技巧

fengyun321
 fengyun321
发布于 2015/09/17 20:36
字数 772
阅读 19
收藏 0

  首先对CALayer进行简单的介绍:

1.在UIView中,CALayer只是一个类的声明,因此需要添加 QuartzCore框架

2.UIKit框架只能应用到ios中,但是Quartz2D是跨平台的,因此在使用颜色时应该将UIColor转换成CGColor

3.修改图层相当于修改了UIView属性,即修改了界面属性

4.形变属性既可以使用形变函数制定,也可以使用keypath制定

创建imageView并设置边框属性(基础)

1.bounds:宽度和高度,x y设置为0;

2.position:位置(默认指中心点,具体由anchorPoint决定

3.anchorPoint:锚点,(x,y的范围都是0~1),决定了position的含义

4.backgroundColor:背景颜色(CGColorRef 类型)

5.borderColor:边框颜色

6.borderWidth:边框宽度

7.borderRadius:圆角半径

8.contents:内容

   UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(90, 90, 90, 90)];
    imgView.backgroundColor = [UIColor redColor];
    imgView.image = [UIImage imageNamed:@"1.jpg"];
    [self.view addSubview:imgView];
    
    //1.获取layer设置边框
    imgView.layer.borderWidth = 1;
    imgView.layer.borderColor = [UIColor darkGrayColor].CGColor;
   // 2.设置弧度
    imgView.layer.cornerRadius = 45;
    imgView.layer.masksToBounds = YES;
    imgView.clipsToBounds = YES;
    
    //3.设置阴影
    //如果设置imgView.layer.masksToBounds = YES;  则不会出现阴影
    imgView.layer.shadowColor = [UIColor redColor].CGColor;
    imgView.layer.shadowOffset = CGSizeMake(5, 5);
    imgView.layer.shadowOpacity = 0.5;

    //对imgView的layer层的transform 属性进行操作(第一种方法)
        //平移
    imgView.layer.transform = CATransform3DMakeTranslation(0, 200, 0);
    //旋转
     imgView.layer.transform = CATransform3DMakeRotation(M_PI_4, 1, 0, 0);
    //缩放
      imgView.layer.transform = CATransform3DMakeScale(2, 2, 1);
    
   //对imgView的layer层的transform 属性进行操作(第二种方法)通过kvc的方法
        
           //平移
   [imgView.layer setValue:@100 forKeyPath:@"transform.translation.x"];
    //旋转
    
    [imgView.layer setValue:@M_PI_2 forKeyPath:@"transform.rotation.z"];
    //缩放
    [imgView.layer setValue:@0.5 forKeyPath:@"transform.scale.x"];

  CALayer的基本属性

//创建图层
    CALayer *subLayer = [[CALayer alloc] init];
    //将图层添加到view的根图层上
    [self.view.layer addSublayer:subLayer];
    
    //----------常用的属性----------
    //设置图层的大小
    subLayer.bounds = CGRectMake(0, 0, 200, 200);
    //设置图层的显示位置
    subLayer.position = CGPointMake(100, 100);
    //设置背景颜色
    subLayer.backgroundColor = [UIColor redColor].CGColor;
    
    //设置锚点
    //决定了position的含义,x和y的范围是0~1
    subLayer.anchorPoint = CGPointMake(0.5, 0.5);
    
    //设置图层显示的内容
    UIImage *img = [UIImage imageNamed:@"1.jpg"];
    subLayer.contents = (id)img.CGImage;

  CALayer中的隐式动画(隐式动画的默认时间为0.25秒)

   每一个UIView内部都默认关联着一个CALayer,称这个layer为Root Layer;

所有的非Root Layer都存在着隐式动画,默认时长为1/4秒

bounds:缩放动画

position:平移动画

opacity:淡入淡出的动画(改变透明度)

更多的隐式动画属性可在文档中搜索

使用CALayer绘图,会调用自己的drawRect方法

//点击界面触触发的方法
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    //隐式动画的时间:0.25秒
    
    //如果不想存在动画
    
    //关闭动画
//    [CATransaction begin];
//    [CATransaction setDisableActions:YES];
    
    //取得点击的坐标
    UITouch *touch = [touches anyObject];
    CGPoint point = [touch locationInView:self.view];
    
    //1.修改layer的位置
    _layer.position = point;
    
    //2、改变layer的大小
    CGFloat num = arc4random_uniform(50) + 30;
    _layer.bounds = CGRectMake(0, 0, num, num);
    
    //3、修改layer的透明度
    _layer.opacity = arc4random_uniform(10)*0.1;
    
    //4、背景颜色
    _layer.backgroundColor = [UIColor colorWithRed:arc4random_uniform(10)*0.1 green:arc4random_uniform(10)*0.1 blue:arc4random_uniform(10)*0.1 alpha:1].CGColor;
    
    //5、设置边框的弧度
    _layer.cornerRadius = arc4random_uniform(20);
    
    //6、transform
    _layer.transform = CATransform3DMakeScale(2, 1, 1);
    
    //提交
    [CATransaction commit];
    
}








© 著作权归作者所有

fengyun321
粉丝 3
博文 31
码字总数 16462
作品 0
海淀
程序员
私信 提问
iO6 Programming pushing the limits 阅读笔记

目录 第一部分 iOS6新内容 第二部分 从每天工具中获取更多(介绍日常使用控件和框架的潜力) 第三部分 完成任务的正确工具(介绍不是那么常用的控件和框架) 第四部分 发挥到极限(深入理解i...

云飞扬v5
2015/11/09
56
0
GPU vs CPU in iOS

一直以来,我们做产品的时候并没有特别的去考虑CPU/GPU的使用,最近为了提升可视化功能的性能,发现合理使用GPU也是一个可以好好研究的部分,这里总结一下一些有用的信息。 中央处理器 CPU ...

雨_树
2018/07/10
0
0
iOS播放器、Flutter高仿书旗小说、卡片动画、二维码扫码、菜单弹窗效果等源码

iOS精选源码 全网最详细购物车强势来袭(http://www.code4app.com/thread-10664-1-1.html) 一款优雅易用的微型菜单弹窗(类似QQ和微信右上角弹窗)(http://www.code4app.com/thread-12069-1-1....

Android爱开源
01/23
352
0
iOS开发系列--让你的应用“动”起来

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jianxin160/article/details/47753223 --iOS核心动画 概览 在iOS中随处都可以看到绚丽的动画效果,实现这些动...

KenshinCui
2015/08/18
0
0
定制iOS 7中的导航栏和状态栏

由于种种原因,申请了一个开源中国的帐号,也许会由于我的不耐心,不会亲自去一步步的写博文,但准备把自己看到的好的,都转载过来,就当时资源的存储,也算是一种推广吧。 iOS 7 教程:定制...

谁家的阿毛
2013/11/21
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
11
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部