• CALayer的mask属性


    可以对图层按path进行指定裁剪

    //#import "ViewController.h"
    //
    //@interface ViewController ()
    //
    //@end
    //
    //@implementation ViewController
    //
    //- (void)viewDidLoad {
    //
    //    [super viewDidLoad];
    //
    //    // 创建一个蓝色的Layer
    //    CALayer *foregroundLayer        = [CALayer layer];
    //    foregroundLayer.bounds          = CGRectMake(0, 0, 100, 100);
    //    foregroundLayer.backgroundColor = [UIColor redColor].CGColor;
    //
    //    // 创建一个路径
    //    UIBezierPath *apath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(20, 20, 60, 60)];
    //
    //    // 创建maskLayer
    //    CAShapeLayer *maskLayer = [CAShapeLayer layer];
    //    maskLayer.path = apath.CGPath;
    //    maskLayer.fillColor = [UIColor greenColor].CGColor;
    //    maskLayer.fillRule = kCAFillRuleEvenOdd;
    //
    //    // 设置位置
    //    foregroundLayer.position = self.view.center;
    //    // 设置mask
    //    foregroundLayer.mask = maskLayer;
    //
    //    [self.view.layer addSublayer:foregroundLayer];
    //
    //}
    //
    //@end
    
    
    #import "ViewController.h"
    
    static CGFloat num;
    
    @interface ViewController ()
    
    @property (nonatomic, strong) CAShapeLayer *circle;
    @property (nonatomic, strong) CADisplayLink *link;
    
    @end
    
    @implementation ViewController
    
    @synthesize circle;
    
    - (void)viewDidLoad {
        
        [super viewDidLoad];
        
    //    //创建一个CAShape
    //    CALayer *bgLayer = [CALayer layer];
    //
    //    //设置大小颜色和位置
    //    bgLayer.bounds          = CGRectMake(0, 0, 200, 200);
    //    bgLayer.backgroundColor = [UIColor redColor].CGColor;
    //    bgLayer.position        = self.view.center;
        
        CAGradientLayer *bgLayer = [CAGradientLayer layer];
        bgLayer.bounds = CGRectMake(0, 0, 200, 200);
        bgLayer.position        = self.view.center;
    
        bgLayer.colors = [NSArray arrayWithObjects:
                           (id)[UIColor colorWithRed:0 green:143/255.0 blue:234/255.0 alpha:1.0].CGColor,
                           (id)[UIColor colorWithRed:0 green:173/255.0 blue:234/255.0 alpha:1.0].CGColor,
                           (id)[UIColor whiteColor].CGColor, nil];
        
        
        //创建一个CAShapeLayer作为MaskLayer
        circle = [CAShapeLayer layer];
        
        //设置路径
        circle.path      = [UIBezierPath bezierPathWithArcCenter:CGPointMake(100, 100)
                                                          radius:20
                                                      startAngle:0
                                                        endAngle:2 * M_PI
                                                       clockwise:YES].CGPath;
    //    circle.lineWidth = 5;
    //    circle.fillColor = [UIColor greenColor].CGColor;
    //    circle.fillRule  = kCAFillRuleEvenOdd;
        
        //设置maskLayer
        bgLayer.mask = circle;
        
        [self.view.layer addSublayer:bgLayer];
        
        //添加计时器 这个只是一个附加动画
        //self.link = [CADisplayLink displayLinkWithTarget:self selector:@selector(action)];
        //[self.link addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
    }
    
    - (void)action {
        
        num ++;
        
        circle.path      = [UIBezierPath bezierPathWithArcCenter:CGPointMake(100, 100)
                                                          radius:20 + num
                                                      startAngle:0
                                                        endAngle:2 * M_PI
                                                       clockwise:YES].CGPath;
        
        if (num > 1000) {
            [self.link invalidate];
        }
    }
    
    @end
    此文仅为鄙人学习笔记之用,朋友你来了,如有不明白或者建议又或者想给我指点一二,请私信我。liuw_flexi@163.com/QQ群:582039935. 我的gitHub: (学习代码都在gitHub) https://github.com/nwgdegitHub/
  • 相关阅读:
    大道至简阅读笔记08-完结
    (转)MySQL的JDBC驱动源码解析
    Win7如何开启Telnet服务
    idea 设置jetty进程jvm参数
    (转)如何在maven环境中设置JVM参数
    (转)IntelliJ Idea 常用快捷键列表 for win
    cglib Demo
    MAVEN 配置阿里巴巴镜像
    MyBatis入门基础(一)
    JAVA常见面试题之Forward和Redirect的区别
  • 原文地址:https://www.cnblogs.com/liuw-flexi/p/8918582.html
Copyright © 2020-2023  润新知