zoukankan      html  css  js  c++  java
  • 将CAGradientLayer当做mask使用

    将CAGradientLayer当做mask使用

    效果

    源码

    https://github.com/YouXianMing/Animations

    //
    //  CAGradientView.h
    //  MaskView
    //
    //  Created by YouXianMing on 16/2/15.
    //  Copyright © 2016年 YouXianMing. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    @interface CAGradientView : UIView
    
    /**
     *  CAGradientLayer's colors.
     */
    @property (nonatomic, strong) NSArray  *colors;
    
    /**
     *  CAGradientLayer's locations.
     */
    @property (nonatomic, strong) NSArray  *locations;
    
    /**
     *  CAGradientLayer's startPoint.
     */
    @property (nonatomic)         CGPoint   startPoint;
    
    /**
     *  CAGradientLayer's endPoint.
     */
    @property (nonatomic)         CGPoint   endPoint;
    
    @end
    //
    //  CAGradientView.m
    //  MaskView
    //
    //  Created by YouXianMing on 16/2/15.
    //  Copyright © 2016年 YouXianMing. All rights reserved.
    //
    
    #import "CAGradientView.h"
    
    @interface CAGradientView () {
        
        CAGradientLayer   *_gradientLayer;
    }
    
    @end
    
    @implementation CAGradientView
    
    + (Class)layerClass {
        
        return [CAGradientLayer class];
    }
    
    - (instancetype)initWithFrame:(CGRect)frame {
        
        if (self = [super initWithFrame:frame]) {
            
            _gradientLayer = (CAGradientLayer *)self.layer;
        }
        
        return self;
    }
    
    #pragma mark - 重写setter,getter方法
    
    @synthesize colors = _colors;
    
    - (void)setColors:(NSArray *)colors {
        
        _colors = colors;
        
        // 将color转换成CGColor
        NSMutableArray *cgColors = [NSMutableArray array];
        
        for (UIColor *tmp in colors) {
            
            id cgColor = (__bridge id)tmp.CGColor;
            [cgColors addObject:cgColor];
        }
        
        // 设置Colors
        _gradientLayer.colors = cgColors;
    }
    
    - (NSArray *)colors {
        
        return _colors;
    }
    
    @synthesize locations = _locations;
    
    - (void)setLocations:(NSArray *)locations {
        
        _locations               = locations;
        _gradientLayer.locations = _locations;
    }
    
    - (NSArray *)locations {
        
        return _locations;
    }
    
    @synthesize startPoint = _startPoint;
    
    - (void)setStartPoint:(CGPoint)startPoint {
        
        _startPoint               = startPoint;
        _gradientLayer.startPoint = startPoint;
    }
    
    - (CGPoint)startPoint {
        
        return _startPoint;
    }
    
    @synthesize endPoint = _endPoint;
    
    - (void)setEndPoint:(CGPoint)endPoint {
        
        _endPoint               = endPoint;
        _gradientLayer.endPoint = endPoint;
    }
    
    - (CGPoint)endPoint {
        
        return _endPoint;
    }
    
    @end

    细节

  • 相关阅读:
    PHP实现微信退款的分析与源码实现
    thinkphp对180万数据批量更新支持事务回滚
    在线工具
    php连接redis
    Redis PHP连接操作
    阿里大于短信接口整合TP5
    Unity3d中如何查找一个脚本被挂在那些预设上面?
    泰课在线夜猫的贪食蛇
    EasyTouch5ForSiki学院
    unity游戏热更新
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/5193840.html
Copyright © 2011-2022 走看看