iOS CALayer-实现颜色的渐变和曲线图
来源:互联网 发布:微信开发团队 知乎 编辑:程序博客网 时间:2024/05/22 12:53
最近研究了一下颜色的渐变
效果,下面简单抽出一个类的代码,方便查看:
#import <UIKit/UIKit.h>@interface YXLayerView : UIView{ CAShapeLayer * _lineLayer,* _maskLayer; CAGradientLayer * _backgroundLayer;}@end
#import "YXLayerView.h"@implementation YXLayerView- (instancetype)init{ self = [super init]; if (self) { [self inits]; } return self;}- (instancetype)initWithCoder:(NSCoder *)coder{ self = [super initWithCoder:coder]; if (self) { [self inits]; } return self;}- (instancetype)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { [self inits]; } return self;}- (void)inits{ self.backgroundColor = [UIColor grayColor]; self.clipsToBounds = YES; _maskLayer = [[CAShapeLayer alloc] init]; _backgroundLayer = [[CAGradientLayer alloc] init]; _backgroundLayer.colors = @[(id)[UIColor redColor].CGColor,(id)[UIColor greenColor].CGColor,(id)[UIColor blueColor].CGColor]; _backgroundLayer.startPoint = CGPointMake(0.5, 0); _backgroundLayer.endPoint = CGPointMake(0.5, 1.0); [self.layer addSublayer:_backgroundLayer]; _lineLayer = [[CAShapeLayer alloc] init]; _lineLayer.lineCap = kCALineCapRound; _lineLayer.lineJoin = kCALineJoinRound; _lineLayer.fillColor = [UIColor clearColor].CGColor; _lineLayer.strokeColor = [UIColor redColor].CGColor; _lineLayer.lineWidth = 5.0; [self.layer addSublayer:_lineLayer];}// Only override drawRect: if you perform custom drawing.// An empty implementation adversely affects performance during animation.- (void)drawRect:(CGRect)rect { // Drawing code CGRect bounds = self.bounds; CGFloat space = CGRectGetWidth(bounds)/4.0; CGFloat y = CGRectGetHeight(bounds)/2.0; UIBezierPath * bezierPath = [UIBezierPath bezierPath]; [bezierPath moveToPoint:CGPointMake(0, y)]; [bezierPath addQuadCurveToPoint:CGPointMake(space, y - 10) controlPoint:CGPointMake(space/2.0, y - 80)]; [bezierPath addQuadCurveToPoint:CGPointMake(2 * space, y - 10) controlPoint:CGPointMake(space + space/2.0, y - 80)]; [bezierPath addQuadCurveToPoint:CGPointMake(3 * space, y - 40) controlPoint:CGPointMake(2 * space + space/2.0, (y - 40)/2.0)]; [bezierPath addQuadCurveToPoint:CGPointMake(4 * space, y) controlPoint:CGPointMake(3 * space + space/2.0, y/2.0)]; _lineLayer.path = bezierPath.CGPath; _backgroundLayer.frame = bounds; [bezierPath addLineToPoint:CGPointMake(CGRectGetWidth(bounds), CGRectGetHeight(bounds))]; [bezierPath addLineToPoint:CGPointMake(0, CGRectGetHeight(bounds))]; [bezierPath closePath]; _maskLayer.path = bezierPath.CGPath; _backgroundLayer.mask = _maskLayer;}@end
0 0
- iOS CALayer-实现颜色的渐变和曲线图
- iOS实现透明度渐变和颜色渐变的view
- ios渐变颜色的实现
- iOS实现颜色渐变
- iOS 实现颜色渐变
- 【iOS】View实现透明度渐变和颜色渐变
- iOS 实现背景颜色渐变的方式
- code实现透明度渐变和颜色渐变的view
- code实现透明度渐变和颜色渐变的view
- code实现透明度渐变和颜色渐变的view
- code实现透明度渐变和颜色渐变的view
- ios 实现颜色渐变(渐变色)
- 实现透明度渐变和颜色渐变
- iOS实现一个颜色渐变的弧形进度条
- iOS实现一个颜色渐变的弧形进度条
- iOS实现一个颜色渐变的弧形进度条
- iOS实现一个颜色渐变的弧形进度条
- iOS实现一个颜色渐变的弧形进度条
- 再来谈谈iOS的table view(动态高度计算)
- 关于UDP socket的一点小知识
- 1067 : 最近公共祖先·二
- HDU 4768 Flyer
- 严重: IOException while loading persisted sessions: java.io.EOFException
- iOS CALayer-实现颜色的渐变和曲线图
- 2012年5月SAT香港真题解析
- 02 JAVA 对象
- JS中&&和||用法
- C语言中逻辑运算符的陷阱
- Java从网络读取图片并保存至本地
- PAT (Advanced Level) 1012. The Best Rank (25) 最佳排名,结构体排序,哈希查询
- No resource found that matches the given name 'android:Widget.Material.ActionButton'
- unity3D的update·函数