绘制线性渐变
大多数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);