zoukankan      html  css  js  c++  java
  • 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/
  • 相关阅读:
    particcles.js in 安卓WebView
    PDF.js 主页样式以及获取流
    Oracle授权A中的表给B
    安卓Response 获取body的正确方式
    android.util.Base64 和 org.apache.commons.codec.binary.Base64
    DAY62-前端入门-javascript(九)jQurey高级
    DAY61-前端入门-javascript(八)jQurey
    DAY60-前端入门-javascript(七)JS动画 | JS盒模型 | DOM | BOM
    DAY59-前端入门-javascript(六)JS事件
    DAY58-前端入门-javascript(五)JS常用类
  • 原文地址:https://www.cnblogs.com/liuw-flexi/p/8918582.html
Copyright © 2011-2022 走看看