iOS里面的背景颜色实现渐变的方式有两种,第一种就是给一个渐变的图片做背景,当然这样有很大的局限性,比如我现在就需要根据项目需求要动态的改变渐变背景色。

这样首先想到quartz 2D 这里的知识进行绘图,我根据需要在自定义视图里面的drawRect方法进行绘制。

- (void)drawRect:(CGRect)rect {/***  1.通过CAGradientLayer 设置渐变的背景。*/CAGradientLayer *layer = [CAGradientLayer new];//colors存放渐变的颜色的数组layer.colors=@[(__bridge id)[UIColor greenColor].CGColor,(__bridge id)[UIColor whiteColor].CGColor];/*** 起点和终点表示的坐标系位置,(0,0)表示左上角,(1,1)表示右下角*/layer.startPoint = CGPointMake(0.5, 0);layer.endPoint = CGPointMake(0.5, 1);layer.frame = self.bounds;[self.layer addSublayer:layer];/***  方法2.CGGradientRef*/CGContextRef ctx = UIGraphicsGetCurrentContext();CGColorSpaceRef colorSpace=CGColorSpaceCreateDeviceRGB();/*指定渐变色space:颜色空间components:颜色数组,注意由于指定了RGB颜色空间,那么四个数组元素表示一个颜色(red、green、blue、alpha),如果有三个颜色则这个数组有4*3个元素locations:颜色所在位置(范围0~1),这个数组的个数不小于components中存放颜色的个数count:渐变个数,等于locations的个数*/CGFloat compoents[12]={0,0,0,1,0.8,0.1,0.5,1.0,1.0,1.0,1.0,1.0};//设置渐变的位置CGFloat locations[3]={0,0.3,1.0};//创建梯度上下文CGGradientRef gradient= CGGradientCreateWithColorComponents(colorSpace, compoents, locations, 3);/*绘制线性渐变context:图形上下文gradient:渐变色startPoint:起始位置endPoint:终止位置options:绘制方式,kCGGradientDrawsBeforeStartLocation 开始位置之前就进行绘制,到结束位置之后不再绘制,kCGGradientDrawsAfterEndLocation开始位置之前不进行绘制,到结束点之后继续填充startPoint endPoint 不同与上一种方法,指的是真正的坐标*/CGContextDrawLinearGradient(ctx, gradient, CGPointMake(self.frame.size.width/2, 0), CGPointMake(self.frame.size.width/2,self.frame.size.height), kCGGradientDrawsAfterEndLocation);//释放颜色空间CGColorSpaceRelease(colorSpace);
}

方法1效果:

方法2的效果:

iOS 实现背景颜色渐变的方式相关推荐

  1. 背景颜色渐变的几种方式

    * background : linear-gradient(方向 , 颜色 位置) + 方向: [to left][45deg] + 颜色: color 10% // 可以为多组 - 径向渐变 [多 ...

  2. android设置背景颜色渐变,Android背景渐变色(shape,gradient)

    Android设置背景色可以通过在res/drawable里定义一个xml,如下: android:startColor="#FFF" android:endColor=" ...

  3. php如何在添加div的背景颜色_css3颜色渐变:css3如何实现背景颜色渐变?

    为了开发网页的美观,css3背景颜色渐变是经常会用到的,那么,css3背景颜色渐变如何设置呢?本篇文章我们就来介绍关于css颜色渐变背景的设置方法. 我们要知道的是css3渐变有两种类型:css3线性 ...

  4. HTML渐变背景不重复,如何停止重复自身的背景颜色渐变? (css)

    我真的不知道如何解决背景渐变不会重复的问题.我做了很多研究,但大部分都没有帮助.我真的需要它,因为这是为了我的论文,所以我非常感谢他的帮助.预先感谢.如何停止重复自身的背景颜色渐变? (css) @i ...

  5. php背景时间渐变,CSS3怎么实现背景颜色渐变?(图文+视频)

    本篇文章主要给大家介绍css3背景渐变的实现方法总结. 我们在前端开发过程中,为了丰富网站样式内容,那么背景色渐变就有很不错的视觉效果.所谓CSS3 渐变(gradients)也就是可以让你在两个或多 ...

  6. 背景颜色渐变 background

    背景颜色渐变 background background: -webkit-linear-gradient(起始方向,颜色1 ,颜色2,-) background: -webkit-linear-gr ...

  7. CSS -- 实现DIV层背景颜色渐变 (兼容IE 火狐 谷歌浏览器)

    CSS -- 实现DIV层背景颜色渐变 (兼容IE 火狐 谷歌浏览器) FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType= ...

  8. 背景颜色渐变 css3 ---- 转自:至尊宝的BLOG http://blog.sina.com.cn/zzbnie

    背景颜色渐变 css3 一. Webkit浏览器 (1) 第一种写法: background:-webkit-gradient(linear ,10% 10%,100% 100%, color-sto ...

  9. C#如何实现窗体背景颜色渐变?

    如下图,如何才能实现窗体颜色渐变? 实现窗体颜色渐变需要用到Color结构的FormArgb方法,该方法可以重载. 实现的主要代码如下 using System; using System.Colle ...

最新文章

  1. python 中文转unicode编码_Python 解码 Unicode 转义字符串
  2. ANGULAR自带指令有哪些?
  3. C++标准库与STL简介
  4. 关于批量插入数据之我见(100万级别的数据,mysql) (转)
  5. 机器人学习--Turtelbot3学习-- Burger与waffle等版本的切换
  6. VTK:模型用法实战
  7. 【Solr】 solr对拼音搜索和拼音首字母搜索的支持
  8. 学python最重要的是_Python学习,要选哪个版本?
  9. 1.6编程基础之一维数组_01与指定数字相同的数的个数
  10. (二)马尔可夫决策过程
  11. Opencv--CvMat声明和使用
  12. pythondjango教程_Python 中Django安装和使用教程详解
  13. Epic:把虚幻引擎推向所有游戏平台
  14. 【Oracle】RMAN备份
  15. 电脑系统怎么卸载驱动程序
  16. CSC7156 SOP-7
  17. 十二生肖的相合、相冲、相刑、相害
  18. TS 版 Promise 详解
  19. 使用frps建立内网穿透从而实现外界连接内网电脑的全教程
  20. Python 机器人学习手册:1~5

热门文章

  1. Linux - 不同桌面环境介绍与常见设置
  2. 怒江水电开发的争议与对工程实践的认识
  3. 惠普战99 u盘启动BIOS设置教程
  4. 2021年R1快开门式压力容器操作考试及R1快开门式压力容器操作考试题
  5. 基于ANFIS的有色噪声抵消技术
  6. Spring - RabbitMQ循环依赖问题解决
  7. 青岛大学线性代数往年试卷
  8. java软件测试面试题及答案_软件测试时Java面试题
  9. LinuxTina动态调压调频配置与实现
  10. 用ffmpeg将rmvb压制成mp4