1. 代码如下
  2. typedef enum {
  3. GradientLayerKindLeftRight = ,
  4. GradientLayerKindUpDown,
  5. GradientLayerKindLBRT,//左下-右上
  6. GradientLayerKindLTRB //左上-右下
  7. }GradientLayerKind;
  8. //--------------------------------------------------------------
  9. // 创建矩形渐变图层
  10. //
  11. // @param frame 渐变图层的frame
  12. // @param startColor 起始颜色(设置起止颜色的时候可以设置颜色的透明度达到透明度渐变的效果)
  13. // @param endColor 终止颜色
  14. // @param kind 渐变类型
  15. // GradientLayerKindLeftRight = 1,//左-右
  16. // GradientLayerKindUpDown, //上-下
  17. // GradientLayerKindLBRT, //左下-右上
  18. // GradientLayerKindLTRB //左上-右下
  19. // @return 渐变色layer
  20. //----------------------------------------------------------
  21. - (CALayer*)ct_getGradientLayerWithFrame:(CGRect)frame StartColor:(UIColor *)startColor endColor:(UIColor*)endColor andKind:(GradientLayerKind)kind{
  22. //渐变图层
  23. CAGradientLayer *gradientLayer = [CAGradientLayer layer];
  24. gradientLayer.frame = frame;
  25. [gradientLayer setColors:[NSArray arrayWithObjects:(id)[startColor CGColor],(id)[endColor CGColor], nil]];
  26.  
  27. if (kind == GradientLayerKindUpDown) {
  28. [gradientLayer setLocations:@[@,@]];
  29.  
  30. [gradientLayer setStartPoint:CGPointMake(0.5, )];
  31.  
  32. [gradientLayer setEndPoint:CGPointMake(0.5, )];
  33. }else if (kind == GradientLayerKindLeftRight){
  34. [gradientLayer setLocations:@[@,@]];
  35.  
  36. [gradientLayer setStartPoint:CGPointMake(, 0.5)];
  37.  
  38. [gradientLayer setEndPoint:CGPointMake(, 0.5)];
  39. }else if (kind == GradientLayerKindLTRB){
  40. [gradientLayer setLocations:@[@,@]];
  41.  
  42. [gradientLayer setStartPoint:CGPointMake(, )];
  43.  
  44. [gradientLayer setEndPoint:CGPointMake(, )];
  45. }else if (kind == GradientLayerKindLBRT){
  46. [gradientLayer setLocations:@[@,@]];
  47.  
  48. [gradientLayer setStartPoint:CGPointMake(, )];
  49.  
  50. [gradientLayer setEndPoint:CGPointMake(, )];
  51. }
  52.  
  53. return gradientLayer;
  54.  
  55. }
  56. 使用:viewcontrollerviewdidload
  57. for (int i = ; i < ; i++) {
  58. NSInteger hang = i%,lie=i/;
  59. CGFloat w=self.view.frame.size.width/2.0,h=(self.view.frame.size.height-)/2.0;
  60. CGRect frame = CGRectMake(hang*w, lie*h, w, h);
  61. [self.view.layer addSublayer:[self ct_getGradientLayerWithFrame:frame StartColor:[self rgb: g: b: a:0.9] endColor:[self rgb: g: b: a:0.1] andKind:i+]];
  62.  
  63. }
  64. 设置颜色方法:
  65. -(UIColor*)rgb:(NSInteger)r g:(NSInteger)g b:(NSInteger)b a:(CGFloat)alpha{
  66. return [UIColor colorWithRed:r%/256.0 green:g%/256.0 blue:b%/256.0 alpha:alpha];
  67.  
  68. }
  69. 效果图如图所示:(可以发现图层下的label和按钮都可以显示,并且按钮的点击事件正常响应)

IOS 创建渐变图层的更多相关文章

  1. IOS渐变图层CAGradientLayer

    看支付宝蚂蚁积分,天气预报等好多APP都有圆形渐变效果,今天就试着玩了. 一.CAGradientLayer类中属性介绍 CAGradientLayer继承CALayer,主要有以下几个属性: 1.@ ...

  2. iOS - CALayer 绘图层

    1.CALayer 绘图层 在 iOS 系统中,你能看得见摸得着的东西基本上都是 UIView,比如一个按钮.一个文本标签.一个文本输入框.一个图标等等,这些都是 UIView.其实 UIView 之 ...

  3. iOS开发 - CALayer图层

    CALayer的基本使用 在iOS中.你能看得见摸得着的东西基本上都是UIView.比方一个button.一个文本标签.一个文本输入框.一个图标等等.这些都是UIView 事实上UIView之所以能显 ...

  4. 【原】Github系列之三:开源iOS下 渐变颜色的进度条WGradientProgress

    概述 今天我们来实现一个iOS平台上的进度条(progress bar or progress view).这种进度条比APPLE自带的更加漂亮,更加有“B格”.它拥有渐变的颜色,而且这种颜色是动态移 ...

  5. [iOS Animation]-CALayer 图层性能

    图层性能 要更快性能,也要做对正确的事情. ——Stephen R. Covey 在第14章『图像IO』讨论如何高效地载入和显示图像,通过视图来避免可能引起动画帧率下降的性能问题.在最后一章,我们将着 ...

  6. ArcGIS Runtime SDK for iOS开发地图图层-图形图层

    注:本文翻译自:https://developers.arcgis.com/ios/objective-c/guide/creating-a-graphics-layer.htm        创建图 ...

  7. MAPINFO中利用GridMaker工具创建栅格图层

    在工作中需要使用栅格地图,以往都是由研发人员来创建,今天偶然发现Mapinfo中有GridMaker这样一个工具,结合网络搜索自己试了一下,居然做成功了,这里把步骤记录下来,方便以后查看. 1.首先在 ...

  8. cocos2dx中的背景图层CCLayerColor和渐变图层CCLayerGradient

    1.CCLayerColor是专门用来处理背景颜色的图层,它继承自CCLayer,可以用来设置图层的背景颜色,因为CCLayer默认是透明色的,即无颜色的 2.CCLayerGradient是用来显示 ...

  9. [转] arcgis Engine创建shp图层

    小生 原文 arcgis Engine创建shp图层 以创建点图层为例.首先要得到保存文件的地址. SaveFileDialog saveFileDialog = new SaveFileDialog ...

随机推荐

  1. 使用Java开发高性能网站需要关注的那些事儿

    无论大型门户网站还是中小型垂直类型网站都会对稳定性.性能和可伸缩性有所追求.大型网站的技术经验分享值得我们去学习和借用,但落实到更具体的实践上并不是对所有网站可以适用,其他语言开发的网站我还不敢多说, ...

  2. [bzoj1087][scoi2005]互不侵犯king

    题目大意 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上 左下右上右下八个方向上附近的各一个格子,共8个格子. 思路 首先,搜索可以放弃,因为这是一 ...

  3. IE 6 ~ 9 CSS Hack 写法总结

    IE 6 ~ 9 CSS Hack 写法总结 24th 四, 14 lip2up [code lang="css"]_color: red;    /* ie6 */*color: ...

  4. Android--Activity(活动)

    1. 安卓中的 Activity 大致等于桌面应用中的window 2. Activity 的生命周期由系统控制, 所以在开发时要假设 Activity 会被随时销毁掉的情况, 比如: 应用中有一个 ...

  5. jquery toggle方法

    $("#myDiv").toggle(function () { alert(1); }, function () { alert(2); }); 某种需求下可以替代click事件 ...

  6. Java实现选择排序

    选择排序思想就是选出最小或最大的数与第一个数交换,然后在剩下的数列中重复完成该动作. package Sort; import java.util.Arrays; public class Selec ...

  7. 樹的DFS和BFS

    菜鸟心得.... 不对请指出....... /*BFS,广度优先搜索树,用最简单的2叉树来举例, 树的结构如下: A B C D E F GH I J K L M N O广度优先搜索树, 顺序应该是A ...

  8. .NET 扩展方法(Extention Method)的要点

    扩展方法Extention Method的主要介绍在:http://msdn.microsoft.com/zh-cn/library/bb383977(v=vs.100).aspx. 扩展方法的意义在 ...

  9. DataTable 转 List<T>

    最近在做一个项目,表的数据巨多,而且表的字段一般都在30个以上.公司规定不能用Nhibernate以及ef等ORM框架. 所以查询绑定时的工作量极为痛苦.没有办法,自己写了个DataTableToLi ...

  10. android studio ndk配置和ndk开发

    配置开发环境: 1:下载ndk,导入android studio中. 2:在项目中引入NDK   3:在计算机path变量中导入NDK路径,在编译.h文件的时候会用到. 一:建立java的native ...