码迷,mamicode.com
首页 > 其他好文 > 详细

CALayer的mask属性

时间:2018-04-23 13:50:19      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:gpo   line   object   lin   with   clock   The   import   nsa   

 

可以对图层按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

 

CALayer的mask属性

标签:gpo   line   object   lin   with   clock   The   import   nsa   

原文地址:https://www.cnblogs.com/liuw-flexi/p/8918582.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!