博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS 绘制背景色渐变的矩形
阅读量:7087 次
发布时间:2019-06-28

本文共 2495 字,大约阅读时间需要 8 分钟。

hot3.png

两段代码,首先是使用方法

CGContextRef context = UIGraphicsGetCurrentContext();    NSArray *colors = [NSArray arrayWithObjects:                       [UIColor colorWithRed:225.0 / 255.0 green:225.0 / 255.0 blue:225.0 / 255.0 alpha:1.0],                       [UIColor colorWithRed:168.0 / 255.0 green:168.0 / 255.0 blue:168.0 / 255.0 alpha:1.0],                       nil];    [self _drawGradientColor:context                        rect:CGRectMake(rX, rY, rW, rH)                     options:kCGGradientDrawsAfterEndLocation                      colors:colors];    CGContextStrokePath(context);// 描线,即绘制形状    CGContextFillPath(context);// 填充形状内的颜色

在一段就是绘制背景色渐变的矩形

/** * 绘制背景色渐变的矩形,p_colors渐变颜色设置,集合中存储UIColor对象(创建Color时一定用三原色来创建) **/- (void)_drawGradientColor:(CGContextRef)p_context                      rect:(CGRect)p_clipRect                   options:(CGGradientDrawingOptions)p_options                    colors:(NSArray *)p_colors {    CGContextSaveGState(p_context);// 保持住现在的context    CGContextClipToRect(p_context, p_clipRect);// 截取对应的context    int colorCount = p_colors.count;    int numOfComponents = 4;    CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();    CGFloat colorComponents[colorCount * numOfComponents];    for (int i = 0; i < colorCount; i++) {        UIColor *color = p_colors[i];        CGColorRef temcolorRef = color.CGColor;        const CGFloat *components = CGColorGetComponents(temcolorRef);        for (int j = 0; j < numOfComponents; ++j) {            colorComponents[i * numOfComponents + j] = components[j];        }    }    CGGradientRef gradient =  CGGradientCreateWithColorComponents(rgb, colorComponents, NULL, colorCount);    CGColorSpaceRelease(rgb);    CGPoint startPoint = p_clipRect.origin;    CGPoint endPoint = CGPointMake(CGRectGetMinX(p_clipRect), CGRectGetMaxY(p_clipRect));    CGContextDrawLinearGradient(p_context, gradient, startPoint, endPoint, p_options);    CGGradientRelease(gradient);    CGContextRestoreGState(p_context);// 恢复到之前的context}

还有一种实现方式

CAGradientLayer *gradient = [CAGradientLayer layer];gradient.frame = CGRectMake(rX, rY, rW, rH);gradient.colors = [NSArray arrayWithObjects:                       (id)[UIColor blackColor].CGColor,                       (id)[UIColor grayColor].CGColor,                       (id)[UIColor blackColor].CGColor,                        nil];[self.view.layer insertSublayer:gradient atIndex:0];
记得要

#import <QuartzCore/QuartzCore.h>

此文的完成用到了四位老师的文章,在此表示感谢。

转载于:https://my.oschina.net/lych0317/blog/126628

你可能感兴趣的文章
【TDS学习笔记】Offline Backup/Restore the TDS
查看>>
Android之GridView的Item移动
查看>>
Zope???
查看>>
实战DeviceIoControl 之五:列举已安装的存储设备
查看>>
如何将MP3音频文件插入到WordPress
查看>>
sscanf
查看>>
【转】 iOS开发:Debug与Release版本NSLog屏蔽方法
查看>>
ScottGu博客中文版http://blog.joycode.com/scottgu/
查看>>
boost.asio系列——socket编程
查看>>
constellio——基于solr的开源搜索引擎系统源码研究(三)
查看>>
详细介绍Linux shell脚本基础学习(二)
查看>>
CentOS 下安装编译安装MeMcached
查看>>
SQL SERVER 2008 R2 按照自定数据库对象类型生成脚本
查看>>
二月份总结
查看>>
第三届蓝桥杯预赛
查看>>
json2.js的初步学习与了解
查看>>
Code Warrior 10.1环境下如何改变调试界面的开始内容
查看>>
ajaxfileupload ie 多参数
查看>>
Autodesk Infrastructure Map Server(AIMS)/MapGuide API 培训材料--第6章
查看>>
java接口详解以及与抽象类区别
查看>>