iOS 抽奖大转盘动画之CALayer图层介绍

本文详细介绍 iOS 开发中 CALayer 的使用技巧,包括图层属性设置、自定义图层及图层创建方法。通过实例演示如何为 UIImageView 添加阴影、圆角等效果,并展示自定义图层的具体实现。

1.先来介绍下layer的属性

- (void)initImageView{

    //初始化imageview

    UIImageView *imageview  = [[UIImageView alloc]initWithImage:[UIImage  imageNamed:@"1.jpg"]];

    //设置iamge的位置为居中

    imageview.frame = CGRectMake((kScreenWidth-200)/2, (kScreenHeight-200)/2, 200, 200);

    //添加到view

    [self.view addSubview:imageview];

    //图层

    //1.设置阴影颜色为黄色  类型转换为CGColor

    imageview.layer.shadowColor = [UIColor yellowColor].CGColor;

    //2.设置阴影偏移大小

    imageview.layer.shadowOffset  = CGSizeMake(10, 10);

    //3.设置阴影的不透明度

    imageview.layer.shadowOpacity = 0.5;

    //4.设置圆角的大小

    imageview.layer.cornerRadius = 20;//设置圆角半径为10

    //强制内部的所有子层支持圆角效果  使用后就不显示阴影效果

    imageview.layer.masksToBounds  = YES;

    //5.设置边框

    imageview.layer.borderWidth = 5;

    imageview.layer.borderColor = [UIColor redColor].CGColor;

//6.设置旋转,缩放  沿着xy轴顺时针旋转 四分之π

    imageview.layer.transform = CATransform3DMakeRotation(M_PI_4, 1, 1, 0);

    //沿着z轴顺时针旋转 四分之π

//    imageview.layer.transform = CATransform3DMakeRotation(M_PI_4, 1, 1, 0);

    //7.设置缩放  x轴缩放0.5

//    imageview.layer.transform = CATransform3DMakeScale(0.5, 0.5, 0.5);


2.如何创建layer

//通过类方法创建  包含在QuartzCore框架中 这个框架是跨平台的  需要在头文件中添加以及Link FrameWork处添加

    CALayer *layer = [CALayer layer];

    //设置layer图层的属性

    //设置背景颜色 灰色

    layer.backgroundColor = [UIColor grayColor].CGColor;

    //设置layer bounds

    layer.bounds = CGRectMake(0, 0, 100, 100);

    /*

     *position设置CALayer在父图层中的位置 以父图层的左上角为原点(0,0)

     *anchorPoint 锚点(定位点) 决定CALayer的哪个点在position属性所指的位置,以自己的左上角为原点(0,0) 默认值(0.5,0.5)  x~y取值是0-1 右下角(1,1)

     */

    //设置layerposition

    layer.position CGPointMake(200, 200);

    //设置layer的锚点

    layer.anchorPoint = CGPointMake(0, 1);

    //设置layer的内容

    layer.contents =  (__bridge id _Nullable)([UIImage  imageNamed:@"1.jpg"].CGImage);

    //添加图层

    [self.view.layer addSublayer:layer];


3.自定义图层

3.1建立子类继承于父类CALayer

#import "kLayer.h"


@implementation kLayer

//实现drawInContext方法

- (void)drawInContext:(CGContextRef)ctx{

//    //设置颜色

//    CGContextSetRGBFillColor(ctx, 1, 0, 0, 0.5);

//    //在视图上画一个圆形  宽和高相等的椭圆

//    CGContextAddEllipseInRect(ctx, CGRectMake(0, 0, 100, 100));

//    //将圆形画到视图上

//    CGContextFillPath(ctx);

}

@end



在viewcontroller.m中实现如下方法

- (void)viewDidLoad {

    [super viewDidLoad];

    [self initLayer];

}


//初始化自定义图层

- (void)initLayer{

    kLayer *layer = [kLayer layer];

    //设置图层的大小

    layer.bounds = CGRectMake(0, 0, 200, 200);

    layer.anchorPoint = CGPointMake(0, 0);

    //第二种方法 代理

    layer.delegate = self;//不用协议  任何对象都能成为代理

    [layer setNeedsDisplay];//必须调用这个方法 layer才会显示

    //添加图层

    [self.view.layer addSublayer:layer];

    

}


通过代理实现的  需要实现这个代理的方法

#pragma mark  layer代理方法

//在这个代理方法中 可以绘制图层

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx{

    //设置颜色

    CGContextSetRGBFillColor(ctx, 0, 0, 1, 1);

    //在视图上画一个圆形  宽和高相等的椭圆

    CGContextAddEllipseInRect(ctx, CGRectMake(0, 0, 100, 100));

    //将圆形画到视图上

    CGContextFillPath(ctx);

}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值