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. MATLAB基本操作(一):MATLAB中变量的文件存储
  2. Web使用热敏打印小票(IE环境)
  3. CF280C-Game on Tree【数学期望】
  4. C/C++查找一定范围内的素数(筛法)
  5. 扩展或插件 (Extension or Plugin )
  6. oracle 百万数据存储,jdbc oracle 百万级数据量存储
  7. vs2015 编译时项目出现NuGet程序包还原失败,找不到xxx.xxx.xxx版本的程序包,怎么解决这个问题?
  8. android自定义sufaceview,Android自定义SurfaceView实现画板功能
  9. 如何免费下载百度文库文章
  10. axure rp 9授权码
  11. NetworkX使用手册
  12. python xlwt写excel_Python使用xlwt写excel并设置写入格式
  13. beta阶段测试基本概况对应机型硬件信息
  14. jupyter不显示直接保存图片
  15. unity实现图片轮播效果_Unity 制作图片轮播功能
  16. cadence 旋转快捷键_cadence快捷键
  17. 埃里克贝里奇_未来公司客服的标配?苹果Watch智能手表开启新时代
  18. 多校训练2 F Girlfriend 数论(球冠)
  19. d2-admin框架的使用笔记
  20. ZigBee 3.0 Z-Stack 3.01 终端设备入网过程全解析

热门文章

  1. ICMP协议(3层网络层协议:IP、ARP、ICMP)
  2. 硬盘、寄存器、二级缓存(高速缓存)、内存四种存储器中,速度最快的是?
  3. dotnet core 也能协调分布式事务啦!
  4. python把excel变成ppt_用Python写excel和ppt文件
  5. web渗透cms靶场
  6. 关于冷备份与热备份的对比理解
  7. NSA组网下2G/3G/4G/5G系统协同策略的研究
  8. php过滑码,小程序中多滑块的实现代码
  9. 操作系统学习笔记——北京大学陈向群老师课后及习题答案(6)
  10. 怎么修改文件的创建时间和修改时间?