[控件] AngleGradientView
AngleGradientView

效果

说明
1. 用源码产生带环形渐变色的view
2. 可以配合maskView一起使用 (上图中的右下角图片的效果)
源码
https://github.com/YouXianMing/UI-Component-Collection
https://github.com/paiv/AngleGradientLayer
//
// AngleGradientView.h
// GradientLayer
//
// Created by YouXianMing on 15/5/15.
// Copyright (c) 2015年 YouXianMing. All rights reserved.
// #import <UIKit/UIKit.h> typedef enum : NSUInteger { /**
* 金属风格
*/
GradientMetalTypeOne,
GradientMetalTypeTwo, /**
* 彩虹风格
*/
GradientRainbow, test, } EAngleGradientType; @interface AngleGradientView : UIView /**
* 返回带环形渐变颜色的view
*
* @param frame 尺寸
* @param colors 颜色数组(CGColor)
* @param locations 颜色分割点数组(范围取值为[0, 1], 渐变递增,需要包含0与1这两个点)
*
* @return 创建好的带环形渐变的view
*/
- (instancetype)initWithFrame:(CGRect)frame
withCGColors:(NSArray *)colors
withLocations:(NSArray *)locations; /**
* 便利构造器,便捷的创建出指定风格的渐变环形的view
*
* @param frame 尺寸
* @param type 指定的风格
*
* @return 创建好的带环形渐变的view
*/
+ (instancetype)gradientViewWithFrame:(CGRect)frame
gradientType:(EAngleGradientType)type; @end
//
// AngleGradientView.m
// GradientLayer
//
// Created by YouXianMing on 15/5/15.
// Copyright (c) 2015年 YouXianMing. All rights reserved.
// #import "AngleGradientView.h"
#import "AngleGradientLayer.h" @interface AngleGradientView () { AngleGradientLayer *_angleGradientLayer; } @end @implementation AngleGradientView /**
* 重置layer为AngleGradientLayer
*/
+ (Class)layerClass {
return [AngleGradientLayer class];
} - (instancetype)initWithFrame:(CGRect)frame {
return [self initWithFrame:frame withCGColors:nil withLocations:nil];
} - (instancetype)initWithFrame:(CGRect)frame withCGColors:(NSArray *)colors withLocations:(NSArray *)locations { self = [super initWithFrame:frame];
if (self) {
_angleGradientLayer = (AngleGradientLayer *)self.layer; if (colors != nil) {
_angleGradientLayer.colors = colors;
_angleGradientLayer.locations = locations;
} } return self;
} + (instancetype)gradientViewWithFrame:(CGRect)frame
gradientType:(EAngleGradientType)type { NSMutableArray *colors = nil;
NSMutableArray *locations = nil;
AngleGradientView *angleGradientView = nil; if (type == GradientMetalTypeOne) { colors = [[NSMutableArray alloc] initWithCapacity:];
[colors addObject:(id)[UIColor colorWithWhite:0.65 alpha:].CGColor];
[colors addObject:(id)[UIColor colorWithWhite:0.9 alpha:].CGColor];
[colors addObject:(id)[UIColor colorWithWhite:0.75 alpha:].CGColor];
[colors addObject:(id)[UIColor colorWithWhite:0.35 alpha:].CGColor];
[colors addObject:(id)[UIColor colorWithWhite:0.75 alpha:].CGColor];
[colors addObject:(id)[UIColor colorWithWhite:0.9 alpha:].CGColor];
[colors addObject:(id)[UIColor colorWithWhite:0.75 alpha:].CGColor];
[colors addObject:(id)[UIColor colorWithWhite:0.35 alpha:].CGColor];
[colors addObject:(id)[UIColor colorWithWhite:0.55 alpha:].CGColor];
[colors addObject:(id)[UIColor colorWithWhite:0.65 alpha:].CGColor]; } else if (type == GradientMetalTypeTwo) { colors = [[NSMutableArray alloc] initWithCapacity:];
locations = [[NSMutableArray alloc] initWithCapacity:];
[colors addObject:(id)[UIColor colorWithRed: green: blue: alpha:].CGColor];
[colors addObject:(id)[UIColor colorWithRed: green: blue: alpha:].CGColor];
[locations addObject:[NSNumber numberWithInt:]];
[locations addObject:[NSNumber numberWithInt:]]; } else if (type == GradientRainbow) { colors = [[NSMutableArray alloc] initWithCapacity:];
[colors addObject:(id)[UIColor colorWithRed: green: blue: alpha:].CGColor];
[colors addObject:(id)[UIColor colorWithRed: green: blue: alpha:].CGColor];
[colors addObject:(id)[UIColor colorWithRed: green: blue: alpha:].CGColor];
[colors addObject:(id)[UIColor colorWithRed: green: blue: alpha:].CGColor];
[colors addObject:(id)[UIColor colorWithRed: green: blue: alpha:].CGColor];
[colors addObject:(id)[UIColor colorWithRed: green: blue: alpha:].CGColor];
[colors addObject:(id)[UIColor colorWithRed: green: blue: alpha:].CGColor]; } angleGradientView = [[AngleGradientView alloc] initWithFrame:frame
withCGColors:colors
withLocations:locations]; return angleGradientView;
} @end
[控件] AngleGradientView的更多相关文章
- JS调用Android、Ios原生控件
在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...
- HTML5 progress和meter控件
在HTML5中,新增了progress和meter控件.progress控件为进度条控件,可表示任务的进度,如Windows系统中软件的安装.文件的复制等场景的进度.meter控件为计量条控件,表示某 ...
- 百度 flash html5自切换 多文件异步上传控件webuploader基本用法
双核浏览器下在chrome内核中使用uploadify总有302问题,也不知道如何修复,之所以喜欢360浏览器是因为帮客户控制渲染内核: 若页面需默认用极速核,增加标签:<meta name=& ...
- JS与APP原生控件交互
"热更新"."热部署"相信对于混合式开发的童鞋一定不陌生,那么APP怎么避免每次升级都要在APP应用商店发布呢?这里就用到了混合式开发的概念,对于电商网站尤其显 ...
- UWP开发必备:常用数据列表控件汇总比较
今天是想通过实例将UWP开发常用的数据列表做汇总比较,作为以后项目开发参考.UWP开发必备知识点总结请参照[UWP开发必备以及常用知识点总结]. 本次主要讨论以下控件: GridView:用于显示数据 ...
- 【踩坑速记】开源日历控件,顺便全面解析开源库打包发布到Bintray/Jcenter全过程(新),让开源更简单~
一.写在前面 自使用android studio开始,就被它独特的依赖方式:compile 'com.android.support:appcompat-v7:25.0.1'所深深吸引,自从有了它,麻 ...
- 对百度WebUploader开源上传控件的二次封装,精简前端代码(两句代码搞定上传)
前言 首先声明一下,我这个是对WebUploader开源上传控件的二次封装,底层还是WebUploader实现的,只是为了更简洁的使用他而已. 下面先介绍一下WebUploader 简介: WebUp ...
- Windows API 设置窗口下控件Enable属性
参考页面: http://www.yuanjiaocheng.net/webapi/create-crud-api-1-put.html http://www.yuanjiaocheng.net/we ...
- VB.NET设置控件和窗体的显示级别
前言:在用VB.NET开发射频检测系统ADS时,当激活已存在的目标MDI子窗体时,被其他子窗体遮住了,导致目标MDI子窗体不能显示. 这个问题怎么解决呢?网上看到一篇帖子VB.NET设置控件和窗体的显 ...
随机推荐
- 11-hdfs-NameNode-HA-wtihQJM解决单点故障问题
在hdfs中, NN只有一个, 但其中保存的数据尤其重要, 所以需要将元数据保存, 其中源数据有2个形式, fsimage 和 edit文件, 最简单的解决方法就是复制fsimage, 并在文件修改时 ...
- kmean算法C++实现
kmean均值算法是一种最常见的聚类算法.算法实现简单,效果也比较好.kmean算法把n个对象划分成指定的k个簇,每个簇中所有对象的均值的平均值为该簇的聚点(中心). k均值算法有如下五个步骤: 随机 ...
- 【设计模式】观察者模式 Observer Pattern
定义:观察者模式定义了对象之间的一对多依赖.当“主题”(Object)状态改变事,所有依赖它的“观察者”(Observer)都会受到通知并自动更新.主题支持观察者订阅和退订. 观察者模式提供了一种对象 ...
- HAProxy Installation and Configuration on CentOS 6.4 to Mitigate The Effects of Abusive Clients--转
ref:http://thoughts.z-dev.org/2013/05/07/haproxy-installation-and-configuration-on-centos-6-4-to-mit ...
- json 只能用 for-in 遍历
[JS] var json1 = { 'name' : 'yy' , 'age' : 11 , 'fun' : '前端开发' }; for( var attr in json1 ) { alert( ...
- Rails 建立一个资源
在blog 应用程序中.你可以通过脚手架(scaffolded)开始建立一个资源. 这将是单一的blog 提交.请输入以下命令 $ rails generate scaffold Post name: ...
- CPU结构与指令执行过程简介
CPU(Central Processing Unit)是计算机中进行算术和逻辑计算处理指令的主要部件. CPU结构 CPU由通用寄存器组,运算器,控制器和数据通路等部件组成. 寄存器包括 数据寄存器 ...
- MongoDB之集合管理一
最近的几篇博客都是关于MongoDB的,虽然个人感觉也没多少知识点,但没想到竟然有转载我的博客的,不管有经过我同意还是没经过我同意,说明写的应该还是有价值的,这也是我写博客的一个动力之一吧.上一博客学 ...
- CodeBlocks "no such file or directory" 错误解决方案(创建类找不到头文件)
在CodeBlocks下,有时候需要自己定义类,当然就要添加相应的头文件,但添加进去的头文件明明包含在项目中了, 但编译时还是会报错:no such file or directory;这是为什么呢? ...
- [日常] Go语言圣经-WEB服务与习题
Go语言圣经-web服务 1.Web服务程序,标准库里的方法已经帮我们完成了大量工作 2.main函数将所有发送到/路径下的请求和handler函数关联起来,/开头的请求其实就是所有发送到当前站点上的 ...