UIView的背景渐变
2024-10-11 22:21:31
//绘制背景渐变 /* CGCradientCreateWithColorComponents函数需要四个参数: 色彩空间:(Color Space)这是一个色彩范围的容器,类型必须是CGColorSpaceRef.对于这个参数,我们可以传入CGColorSpaceCreateDeviceRGB函数的返回值,它将给我们一个RGB色彩空间。 颜色分量的数组:这个数组必须包含CGFloat类型的红、绿、蓝和alpha值。数组中元素的数量和接下来两个参数密切。从本质来讲,你必须让这个数组包含足够的值,用来指定第四个参数中位置的数量。所以如果你需要两个位置位置(起点和终点),那么你必须为数组提供两种颜色 位置数组,颜色数组中各个颜色的位置:此参数控制该渐变从一种颜色过渡到另一种颜色的速度有多快。 位置的数量:这个参数指明了我们需要多少颜色和位置。 */ CGColorSpaceRef rgb = CGColorSpaceCreateDeviceRGB(); CGFloat colors[] = { 51.0 / 255.0, 160.0 / 255.0, 0.0 / 255.0, 1.00, 68.0 / 255.0, 198.0 / 255.0, 0.0 / 255.0, 1.00, // 0.0 / 255.0, 50.0 / 255.0, 126.0 / 255.0, 1.00, }; CGGradientRef myGradient = CGGradientCreateWithColorComponents (rgb, colors, NULL, sizeof(colors)/(sizeof(colors[])*)); // Allocate bitmap context CGContextRef bitmapContext = CGBitmapContextCreate(NULL, , TITLE_CONTROL_HEIGHT, , * , CGColorSpaceCreateDeviceRGB(), kCGImageAlphaNoneSkipFirst); // Draw Gradient Here /* 创建好线性渐变后,我们将使用CGContextDrawLinearGradient过程在图形上下文中绘制,此过程需要五个参数: Graphics context 指定用于绘制线性渐变的图形上下文。 Axial gradient 我们使用CGGradientCreateWithColorComponents函数创建的线性渐变对象的句柄 start point 图形上下文中的一个CGPoint类型的点,表示渐变的起点。 End Point表示渐变的终点。 Gradient drawing options 当你的起点或者终点不在图形上下文的边缘内时,指定该如何处理。你可以使用你的开始或结束颜色来填充渐变以外的空间。此参数为以下值之一:KCGGradientDrawsAfterEndLocation扩展整个渐变到渐变的终点之后的所有点 KCGGradientDrawsBeforeStartLocation扩展整个渐变到渐变的起点之前的所有点。0不扩展该渐变。 */ CGContextDrawLinearGradient(bitmapContext, myGradient, CGPointMake(160.0f, 0.0f),CGPointMake(160.0f, TITLE_CONTROL_HEIGHT), kCGGradientDrawsBeforeStartLocation); // Create a CGImage from context CGImageRef cgImage = CGBitmapContextCreateImage(bitmapContext); // Create a UIImage from CGImage UIImage *uiImage = [UIImage imageWithCGImage:cgImage]; // Release the CGImage CGImageRelease(cgImage); // Release the bitmap context CGContextRelease(bitmapContext); // Create the patterned UIColor and set as background color [titleScrollViewsetBackgroundColor:[UIColorcolorWithPatternImage:uiImage]];
最新文章
- Android前端人员与后台开发的撕逼(一)
- Memcache+Cookie解决分布式系统共享登录状态------------------------------Why Memcached?
- wpa_supplicant 配置与应用
- 读书笔记之 - javascript 设计模式 - 命令模式
- html 使用表单标签,与用户交互
- python基础课程_学习笔记21:文件和材料
- Naive Bayes在mapreduce上的实现
- 掌握这些回答技术面试题的诀窍,让你offer拿到手软。
- iOS中 陀螺仪/加速器 韩俊强的博客
- mysq基础操作
- [转载]linux段页式内存管理技术
- .NET:Threading and Exceptions
- 基于Java Junit测试框架 + jmeter 做压力测试
- 对一致性Hash算法及java实现(转)
- matlab 使用OPENCV
- FreeMarker 技术资料与问题解决备忘录
- Java时间的使用
- #npm install# MSBUILD : error MSB4132: 无法识别工具版本“2.0”。可用的工具版本为 ";4.0";。
- png格式图片转为svg格式图片
- c# 调用服务返回结果模板化
热门文章
- js+json用表格实现简单网站左侧导航
- 【Android】17.4 Activity与IntentService的绑定
- 【Android】3.20 示例20—全景图完整示例
- Winform文件夹图片批量压缩整理修改
- angular学习笔记(三)-视图绑定数据的两种方式
- linux命令(31):more
- linux命令(28):Linux下SCP无需输入密码传输文件,python 中scp文件
- 深入理解php 匿名函数和 Closure
- C++面向对象程序设计的一些知识点(1)
- PhantomJS与CasperJS在Windows下的安装与使用