CALayer简单使用

1.简单地添加一个layer视图

    self.movableCircleLayer = [CALayer layer];

    /// 指定大小
    self.movableCircleLayer.bounds = CGRectMake(0, 0, kLayerWidth, kLayerWidth);

    /// 指定中心点
    self.movableCircleLayer.position = CGPointMake(self.view.center.x, 100);
    /// 圆形
    self.movableCircleLayer.cornerRadius = kLayerWidth / 2;
    /// 背景色
    self.movableCircleLayer.backgroundColor =  [UIColor greenColor].CGColor;

    /// 设置阴影
    self.movableCircleLayer.shadowColor = [UIColor grayColor].CGColor;
    self.movableCircleLayer.shadowOffset = CGSizeMake(3, 3);
    self.movableCircleLayer.shadowOpacity = 0.8;
    [self.view.layer addSublayer:self.movableCircleLayer];

2,使用图层添加一张图片

/// 图层上添加图片
-(void)drawImageWithContent{
    CALayer * layer = [CALayer layer];
    layer.bounds = CGRectMake(0,0,kPhotoWidth,kPhotoWidth);
    layer.position = self.view.center;
    layer.cornerRadius = kPhotoWidth / 2;

    layer.masksToBounds = YES;
    layer.borderColor = [UIColor whiteColor].CGColor;
    layer.borderWidth = 1;

    // 如果只是显示图片,不做其它处理,直接设置contents就可以了,也就不会出现
    // 绘图和图像倒立的问题了
    layer.contents = (__bridge id _Nullable)([UIImage imageNamed:@"hahaha.jpg"].CGImage);
    [self.view.layer addSublayer:layer];

}

3、使用图层代理添加一个有阴影的图片

/// 通过层代理绘制图片

-(void)drawImage{
    CALayer * layer = [CALayer layer];
    layer.bounds = CGRectMake(0, 0, kPhotoWidth, kPhotoWidth);
    layer.position = CGPointMake(self.view.center.x, self.view.bounds.size.height-100);
    layer.cornerRadius = kPhotoWidth/2;

    layer.masksToBounds = YES;
    layer.borderColor = [UIColor whiteColor].CGColor;
    layer.borderWidth = 1;

    layer.delegate = self;

    /// 添加到父视图图层上
    [self.view.layer addSublayer:layer];

    // 当设置masksToBounds为YES后,要想要阴影效果,就需要额外添加一个图层作为阴影图层了
    CALayer * subLayer = [CALayer layer];
    subLayer.position = layer.position;
    subLayer.bounds = layer.bounds;
    subLayer.cornerRadius = layer.cornerRadius;
    subLayer.shadowOpacity = 1.0;
    subLayer.shadowColor = [UIColor redColor].CGColor;
    subLayer.shadowOffset = CGSizeMake(2, 1);
    subLayer.borderWidth = layer.borderWidth;
    subLayer.borderColor = [UIColor whiteColor].CGColor;
    [self.view.layer insertSublayer:subLayer above:layer];

    /// 调用此方法,否则代理不会调用
    [layer setNeedsDisplay];

}

/// 代理方法
-(void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
    /// 将当前上下文入zhan
    CGContextSaveGState(ctx);

    // 注意:坐标系统与UIView的不同,这里使用的是笛卡尔积坐标系,也就是左下角为(0,0)
    // 所以,我们只要记住这点就可以很容易地变换了。

    // 处理图片倒立的问题
    // 默认呈现是倒立的,因此需要将形变矩阵的sy设置为-1就成了正立的了
    // 先缩放后平移也可以
     CGContextScaleCTM(ctx, 1, -1);
     CGContextTranslateCTM(ctx, 0, -kPhotoWidth);

//    /// 平移后水平旋转
//
//    CGContextTranslateCTM(ctx, kPhotoWidth, kPhotoWidth);
//    CGContextRotateCTM(ctx, 3.1415926 / 180 *180);
    UIImage * imgage = [UIImage imageNamed:@"hahaha.jpg"];
    CGContextDrawImage(ctx, CGRectMake(0, 0, kPhotoWidth, kPhotoWidth), imgage.CGImage);
    /// 任务已完成,将上下文退栈
    CGContextRestoreGState(ctx);
}
时间: 2024-10-23 22:04:55

CALayer简单使用的相关文章

核心动画——Core Animation

一. CALayer (一). CALayer简单介绍 在iOS中,你能看得见摸得着的东西基本上都是UIView,比方一个button.一个文本标签.一个文本输入框.一个图标等等.这些都是UIView,事实上UIView之所以能显示在屏幕上,全然是由于它内部的一个图层.在创建UIView对象时,UIView内部会自己主动创建一个图层(即CALayer对象),通过UIView的layer属性能够訪问这个层,要注意的是,这个默认的层不同意又一次创建.但能够往层里面加入子层.UIView能够通过add

iOS核心笔记——CALayer-基本使用

1.CALayer简单使用: ※了解: 通过操作CALayer对象,可以很方便的调整UIView的一些界面属性,例如:阴影.圆角大小.边框宽度--等:在iOS 7.0以前使用CALayer需要手动导入QuartzCore框架. 2.通过CALayer修改UIView的界面属性: 1.在storyboard中拖入UIView,并设置相关属性: 如下图所示: 2.设置阴影: 1. // 1. 设置阴影颜色2. self.blueView.layer.shadowColor = [UIColor bl

CoreGraphics QuartzCore CGContextTranslateCTM 用法

CoreGraphics.h 一些常用旋转常量 #define M_E 2.71828182845904523536028747135266250 e ?#define M_LOG2E 1.44269504088896340735992468100189214 log 2e ?#define M_LOG10E 0.434294481903251827651128918916605082 log 10e ?#define M_LN2 0.693147180559945309417232121458

【转】 CoreGraphics QuartzCore CGContextTranslateCTM 用法

原文:http://blog.csdn.net/sqc3375177/article/details/25708447 CoreGraphics.h 一些常用旋转常量 #define M_E 2.71828182845904523536028747135266250 e ?#define M_LOG2E 1.44269504088896340735992468100189214 log 2e ?#define M_LOG10E 0.43429448190325182765112891891660

iOS -- CALayer之简单的使用

一.简单介绍 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个图标等等,这些都是UIView. 其实UIView之所以能够显示在屏幕上,完全是因为它内部的一个图层,在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层. 当UIView需要显示到屏幕时,会调用drawRect:方法进行绘图,并且会将所有内容绘制在自己的图层上,绘图完毕后,系统会将图层拷贝到屏幕上,于是就完成了U

UI进阶--CALayer的简单介绍和使用例子

CALayer: 在iOS中,你能看得见摸得着的东西基本上都是UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是UIView. 其实UIView之所以能显示在屏幕上,完全是因为它内部的一个图层. 在创建UIView对象时,UIView内部会自动创建一个图层(即CALayer对象),通过UIView的layer属性可以访问这个层. 1 @property(nonatomic,readonly,retain) CALayer *layer; 当UIView需要显示到屏幕

CALayer的简单使用

//创建层 CALayer *layer5=[CALayer layer]; //设置层背景 layer5.backgroundColor=[[UIColor brownColor]CGColor]; //设置大小 layer5.bounds=CGRectMake(200, 200, 200, 200); //设置位置 layer5.position=CGPointMake(200, 200); //设置圆角 layer5.cornerRadius=20; //设置图片 layer5.conte

UI渲染回顾简单笔记

UI渲染的简单过程: CPU,GPU,显示器协同工作,CPU 中计算显示内容,比如视图的创建.布局计算.图片解码.文本绘制等,然后将计算结果提交给GPU,由 GPU 进行变换.合成.渲染.随后 GPU 会把渲染结果提交到帧缓冲区去,随后等待下一次 VSync(垂直同步信号) 到来时,视频控制器会逐行读取帧缓冲区的数据,经过可能的数模转换传递给显示器显示.由于垂直同步的机制,如果在一个 VSync 时间内,CPU 或者 GPU 没有完成内容提交,则那一帧就会被丢弃,等待下一次机会再显示,而这时显示

IOS CALayer(二)

UIview内部有个默认的CALayer对象层,虽然我门不可以重新创建它,但是我门可以再其上面添加子层. 我们知道,UIView有 addSubview:方法,同样,CALayer也有addSublayer:方法.我门可以通过addSublayer:再已有layer上添加自层. 下面我门演示如何添加自层. // // ViewController.m // CX - CALayer(二) // // Created by ma c on 16/3/19. // Copyright ? 2016年