CAGradientLayer CAShapeLayer UIBezierPath

CAGradientLayer 绘制渐变
UIBezierPath 绘制图形路径
CAShapeLayer 根据路径绘图

Untitled.gif

//
//  ViewController.m
//  Fill
//
//  Created by Mr.H on 2018/8/29.
//  Copyright © 2018年 Mr.H. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

/** <#statements#> */
@property (nonatomic,strong) CAGradientLayer *layer;

/** <#statements#> */
@property (nonatomic,assign) CGFloat number;

/** <#statements#> */
@property (nonatomic,assign) BOOL isNo;

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.number = 0.1;
    self.layer = [[CAGradientLayer alloc] init];
    self.layer.frame = (CGRect){CGPointZero, CGSizeMake(200, 200)};
    self.layer.position = self.view.center;
    
    [self.view.layer addSublayer:self.layer];;
    
    self.layer.colors = @[(__bridge id)[UIColor redColor].CGColor,
                     (__bridge id)[UIColor yellowColor].CGColor];
    
    self.layer.locations = @[@(0.0),@(self.number)];
    
    self.layer.startPoint = CGPointMake(0, 0);
    self.layer.endPoint = CGPointMake(1, 1);
//    self.layer.cornerRadius = 10;
    
    CAShapeLayer *shapeLayer = [CAShapeLayer layer];
//    shapeLayer.frame = CGRectMake(0, 0, 50, 50);
    shapeLayer.strokeColor = [UIColor greenColor].CGColor;
    shapeLayer.lineWidth = 1;
//    shapeLayer.fillColor = [UIColor clearColor].CGColor;
    
    UIBezierPath *path = [UIBezierPath bezierPath];
    
    [path addArcWithCenter:CGPointMake(100, 100) radius:100 startAngle:0 endAngle:180 clockwise:YES];
    
//    [path moveToPoint:CGPointMake(0 , 200)];
//    [path addLineToPoint:CGPointMake(0, 0)];
//
//    [path addLineToPoint:CGPointMake(30, 30)];
//
//    [path addLineToPoint:CGPointMake(60, 60)];
//
//    [path addLineToPoint:CGPointMake(90, 30)];
//
//    [path addLineToPoint:CGPointMake(100, 100)];
//    [path addLineToPoint:CGPointMake(200, 200)];
//
//
//    [path moveToPoint:CGPointMake(100 , 20)];
//
//     [path addLineToPoint:CGPointMake(100 , 150)];
//
//    [path addLineToPoint:CGPointMake(200, 200)];
//
//    [path closePath];
    
    shapeLayer.path = path.CGPath;
    
//    [self.layer addSublayer:shapeLayer];
    self.layer.mask = shapeLayer;
    
    [self performSelector:@selector(aaaaa) withObject:self afterDelay:0.2];
    
    
}

- (void)aaaaa {
    
    self.layer.locations = @[@(0.0),@(self.number)];
    
    if (self.isNo) {
        self.layer.colors = @[(__bridge id)[UIColor redColor].CGColor,
                              (__bridge id)[UIColor yellowColor].CGColor];
        self.number = self.number - 0.05;
        
        if (self.number < 0) {
            self.number = 0;
            self.isNo = !self.isNo;
        }
    } else {
        self.layer.colors = @[(__bridge id)[UIColor redColor].CGColor,
                              (__bridge id)[UIColor yellowColor].CGColor];
        self.number = self.number + 0.05;
        
        if (self.number > 1) {
            self.number = 1;
            self.isNo = !self.isNo;
        }
    }
    
    [self performSelector:@selector(aaaaa) withObject:self afterDelay:0.1];
    
}




- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}


@end


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 CALayer IOS SDK详解之CALayer(一) http://doc.okbase.net/Hell...
    Kevin_Junbaozi阅读 5,210评论 3 23
  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,019评论 3 119
  • 目录: 主要绘图框架介绍 CALayer 绘图 贝塞尔曲线-UIBezierPath CALayer子类 补充:i...
    Ryan___阅读 1,713评论 1 9
  • 今天要向大家介绍的这本书,是一部推理小说。然而虽然有着最严谨的新本格推理小说作派,我想他却是写的每一个平凡人身上的...
    路忆尘阅读 802评论 0 1
  • 无意中在书上看到这么一段话:流过泪的眼睛更明亮,滴过血的心灵更坚强! 这世上有的人注定是为爱而生,为情而活的。在情...
    龙虎不在家阅读 1,005评论 2 0