绘制线性渐变

本文介绍在iOS开发中如何使用C语言框架创建线性渐变效果,并讲解了在使用这类框架时如何进行内存管理避免内存泄漏。通过具体代码示例展示了创建渐变效果的步骤,包括设置上下文、定义颜色空间、创建渐变对象及释放内存。
 /**

 大多数iOS & MAC都能使用的框架,都是C语言的,在使用OC时,因为ARC自动管理内存,通常不需要考虑内存管理

 如果在使用C语言框架时,绝大多数,是需要管理内存的!

 创建对象时,如果函数中包含"Create""Retain""Copy"这三个单词,都需要release释放内存

 使用“静态分析工具”,可以“从代码结构上分析”程序是否有可能出现内存泄露! 

 提示:在程序发布前,最好能够使用静态内存分析工具,检测一下代码!  

// 1. 上下文

    CGContextRef ctx = UIGraphicsGetCurrentContext();    

    CGContextSaveGState(ctx);

    UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(110, 100, 100, 100)];

    [path addClip]; 

    // 2. 颜色(色彩)空间,在计算机领域,统一都使用RGB作为颜色空间,CMYK色彩空间是用来打印

    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();

    // 3. 渐变

    // 数组名是指向数组第一个元素的指针

    // 每4个数表示一个颜色 r g b alpha

    // 从红色变到白色

    CGFloat components[] = {1.0, 0.0, 0.0, 1.0, 1.0, 1.0, 1.0, 1.0};

    CGFloat locations[] = {0.0, 1.0};

    CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, components, locations, 2);

    // 4. 绘制线性渐变

    CGContextDrawLinearGradient(ctx, gradient, CGPointZero, CGPointMake(rect.size.width, rect.size.height), kCGGradientDrawsAfterEndLocation);

    // 5. 释放内存

    CGGradientRelease(gradient);

    CGColorSpaceRelease(colorSpace);

    // 恢复上下文

    CGContextRestoreGState(ctx);

转载于:https://www.cnblogs.com/bluceZ/p/4629375.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值