文档章节

绘制背景色渐变的矩形

hejunbinlan
 hejunbinlan
发布于 2015/06/23 16:21
字数 347
阅读 55
收藏 0

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

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

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

01 /**
02  * 绘制背景色渐变的矩形,p_colors渐变颜色设置,集合中存储UIColor对象(创建Color时一定用三原色来创建)
03  **/
04 - (void)_drawGradientColor:(CGContextRef)p_context
05                       rect:(CGRect)p_clipRect
06                    options:(CGGradientDrawingOptions)p_options
07                     colors:(NSArray *)p_colors {
08     CGContextSaveGState(p_context);// 保持住现在的context
09     CGContextClipToRect(p_context, p_clipRect);// 截取对应的context
10     int colorCount = p_colors.count;
11     int numOfComponents = 4;
12     CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB();
13     CGFloat colorComponents[colorCount * numOfComponents];
14     for (int i = 0; i < colorCount; i++) {
15         UIColor *color = p_colors[i];
16         CGColorRef temcolorRef = color.CGColor;
17         const CGFloat *components = CGColorGetComponents(temcolorRef);
18         for (int j = 0; j < numOfComponents; ++j) {
19             colorComponents[i * numOfComponents + j] = components[j];
20         }
21     }
22     CGGradientRef gradient =  CGGradientCreateWithColorComponents(rgb, colorComponents, NULL, colorCount);
23     CGColorSpaceRelease(rgb);
24     CGPoint startPoint = p_clipRect.origin;
25     CGPoint endPoint = CGPointMake(CGRectGetMinX(p_clipRect), CGRectGetMaxY(p_clipRect));
26     CGContextDrawLinearGradient(p_context, gradient, startPoint, endPoint, p_options);
27     CGGradientRelease(gradient);
28     CGContextRestoreGState(p_context);// 恢复到之前的context
29 }

还有一种实现方式

1 CAGradientLayer *gradient = [CAGradientLayer layer];
2 gradient.frame = CGRectMake(rX, rY, rW, rH);
3 gradient.colors = [NSArray arrayWithObjects:
4                        (id)[UIColor blackColor].CGColor,
5                        (id)[UIColor grayColor].CGColor,
6                        (id)[UIColor blackColor].CGColor,
7                         nil];
8 [self.view.layer insertSublayer:gradient atIndex:0];


本文转载自:http://blog.csdn.net/majiakun1/article/details/17848285

共有 人打赏支持
hejunbinlan
粉丝 41
博文 586
码字总数 21569
作品 0
浦东
高级程序员
使用Span实现各种酷炫效果

前一段时间一直在做富文本展示和文本处理,主要用到了Html.fromHtml()实现加载网页,但实现整段文本的某些特殊如个别文字的点击,改背景色、前景色等效果,就用到了我们今天要用到的Span这个...

安卓干货营
2017/12/07
0
0
GradientDrawable

GradientDrawable 支持使用渐变色来绘制图形,通常可以用作Button或是背景图形。 GradientDrawable允许指定绘制图形的种类:LINE,OVAL,RECTANGLE或是RING ,颜色渐变支持LINEARGRADIENT,R...

Ro6k
2012/11/21
0
0
HTML5 绘图技术 「Canvas」和「SVG」

本文重点还是要介绍Canvas,但每次提起Canvas,脑海总会想起SVG,因此先做个简单的对比。   *Canvas 和 SVG 对比  Canvas 和 SVG 都是 HTML5 中推荐的也是主要的2D图形绘制技术 Canvas 提供...

果汁凉茶丶
2017/11/13
0
0
UI设计师SVG动画进阶篇——蒙版动画(上)

蒙版对于UI设计师来说,太熟悉不过了,当然了,可能PS里面用的多一些,AI里面用的少一些,SVG同样支持蒙版,而且借助蒙版,能完成很多神奇的效果。我喜欢称蒙版动画为一种魔术,这是真正的“...

泱泱
2017/05/18
0
0
【CSS】渐变背景(background-image)

0007.jpg 以前,我们要实现这种渐变,可能要用 Photoshop 或 Fireworks 创建一个渐变图形,然后使用 background-image 属性把渐变图形放在元素的背景中。 现在,CSS支持渐变背景,可以理解为...

KelvinZ
2017/11/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

WinDbg

参考来自:http://www.cnit.net.cn/?id=225 SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols ctrl + d to open dump_file Microsoft (R) Windows Debugger Version 6.12.0002.633......

xueyuse0012
今天
2
0
OSChina 周五乱弹 —— 想不想把92年的萝莉退货

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @罗马的王:分享松澤由美的单曲《地球ぎ》 很久没看圣斗士星矢了 《地球ぎ》- 松澤由美 手机党少年们想听歌,请使劲儿戳(这里) @开源中国首...

小小编辑
今天
14
1
springBoot条件配置

本篇介绍下,如何通过springboot的条件配置,控制Bean的创建 介绍下开发环境 JDK版本1.8 springboot版本是1.5.2 开发工具为 intellij idea(2018.2) 开发环境为 15款MacBook Pro 前言 很多时候,...

贺小五
今天
1
0
javascript source map 的使用

之前发现VS.NET会为压缩的js文添加一个与文件名同名的.map文件,一直没有搞懂他是用来做什么的,直接删除掉运行时浏览器又会报错,后来google了一直才真正搞懂了这个小小的map文件背后的巨大...

粒子数反转
昨天
1
0
谈谈如何学Linux和它在如今社会的影响

昨天,还在农耕脑力社会,今天已经人工智能技术、大数据、信息技术的科技社会了,高速开展并迅速浸透到当今科技社会的各个方面,Linux日益成为人们信息时代的到来,更加考验我们对信息的处理程...

linux-tao
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部