CAGradientLayer的使用

一、CAGradientLayer概述

@interface CAGradientLayer : CALayer
//渐变颜色数组
@property(nullable, copy) NSArray *colors;
//渐变的颜色分割线
@property(nullable, copy) NSArray<NSNumber *> *locations;
//开始的位置
@property CGPoint startPoint;
//结束的位置
@property CGPoint endPoint;
//类型-仅支持一种
@property(copy) NSString *type;

@end

/** `type' values. **/
CA_EXTERN NSString * const kCAGradientLayerAxial

二、制作渐变的view

/**  制作渐变的view */
- (UIView *)makeGradientViewWithColors:(NSArray *)colorsArray {
    UIView *viewGreadient = [[UIView alloc]initWithFrame:(CGRect){100,300,200,100}];
    CAGradientLayer *layer = [[CAGradientLayer alloc]init];
    layer.frame = viewGreadient.bounds;
    [viewGreadient.layer addSublayer:layer];
    //渐变数组
    NSArray *arrayColors = colorsArray;
    NSMutableArray  *arrayCGColor = [NSMutableArray array];
    NSEnumerator *enu = [arrayColors objectEnumerator];
    UIColor *color = nil;
    while (color = [enu nextObject]) {
        [arrayCGColor addObject:(__bridge id)color.CGColor];
    }
    //添加渐变色
    layer.colors = arrayCGColor;
    //设置渐变的方向
    layer.startPoint = CGPointMake(0.5, 0);
    layer.endPoint = CGPointMake(0.5, 1);

    return viewGreadient;
}

三、图片的合成、重绘

//多个图片多次绘制即可
/** 将一个Imag制作成图片 */
- (UIImage *)redrawImage:(UIImage *)Image {
    UIGraphicsBeginImageContext(CGSizeMake(100, 100));
    [Image drawInRect:CGRectMake(0, 0, 100, 50)];
    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return img;
}

四、将一个UIView转换为UIImage

/** 将一个view制作为图片 */
- (UIImage *)captureView:(UIView *)view {

    CGRect rect = view.frame;
    UIGraphicsBeginImageContext(rect.size);

    CGContextRef context = UIGraphicsGetCurrentContext();
    [view.layer renderInContext:context];

    UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return img;
}

五、存储图片到App沙盒内

//path为存储路径
[UIImagePNGRepresentation(image) writeToFile:path atomically:YES];
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值