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的更多相关文章

  1. JS调用Android、Ios原生控件

    在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...

  2. HTML5 progress和meter控件

    在HTML5中,新增了progress和meter控件.progress控件为进度条控件,可表示任务的进度,如Windows系统中软件的安装.文件的复制等场景的进度.meter控件为计量条控件,表示某 ...

  3. 百度 flash html5自切换 多文件异步上传控件webuploader基本用法

    双核浏览器下在chrome内核中使用uploadify总有302问题,也不知道如何修复,之所以喜欢360浏览器是因为帮客户控制渲染内核: 若页面需默认用极速核,增加标签:<meta name=& ...

  4. JS与APP原生控件交互

    "热更新"."热部署"相信对于混合式开发的童鞋一定不陌生,那么APP怎么避免每次升级都要在APP应用商店发布呢?这里就用到了混合式开发的概念,对于电商网站尤其显 ...

  5. UWP开发必备:常用数据列表控件汇总比较

    今天是想通过实例将UWP开发常用的数据列表做汇总比较,作为以后项目开发参考.UWP开发必备知识点总结请参照[UWP开发必备以及常用知识点总结]. 本次主要讨论以下控件: GridView:用于显示数据 ...

  6. 【踩坑速记】开源日历控件,顺便全面解析开源库打包发布到Bintray/Jcenter全过程(新),让开源更简单~

    一.写在前面 自使用android studio开始,就被它独特的依赖方式:compile 'com.android.support:appcompat-v7:25.0.1'所深深吸引,自从有了它,麻 ...

  7. 对百度WebUploader开源上传控件的二次封装,精简前端代码(两句代码搞定上传)

    前言 首先声明一下,我这个是对WebUploader开源上传控件的二次封装,底层还是WebUploader实现的,只是为了更简洁的使用他而已. 下面先介绍一下WebUploader 简介: WebUp ...

  8. Windows API 设置窗口下控件Enable属性

    参考页面: http://www.yuanjiaocheng.net/webapi/create-crud-api-1-put.html http://www.yuanjiaocheng.net/we ...

  9. VB.NET设置控件和窗体的显示级别

    前言:在用VB.NET开发射频检测系统ADS时,当激活已存在的目标MDI子窗体时,被其他子窗体遮住了,导致目标MDI子窗体不能显示. 这个问题怎么解决呢?网上看到一篇帖子VB.NET设置控件和窗体的显 ...

随机推荐

  1. 【好书分享】容器网络到kubernetes网络

    Nginx 公司的 Michael Hausenblas 发布了一本关于 docker 和 kubernetes 中的容器网络的小册子.这份资料一共 72 页,是大家由浅入深的了解 Docker 和 ...

  2. Java虚拟机(一):JVM简介

    JVM简介 Java虚拟机(JVM)是由Java虚拟机规范定义的,其上运行的是字节码指令集.这种字节码指令集包含一个字节的操作码(opcode),零至多个操作数(oprand),虚拟机规范明确定义了每 ...

  3. Linux命令-用户、用户组、权限

    参考资料: http://www.linuxidc.com/Linux/2014-07/104445.htm    Linux入门教程:如何手动创建一个Linux用户 http://www.linux ...

  4. 使用fastjson进行转换

    package junit.test; import java.util.ArrayList; import java.util.HashMap; import java.util.List; imp ...

  5. C/C++中的常量到底存在了什么地方

    一般来说,基本类型(整型.字符型等)常量会在编译阶段被编译成立即数,占的是代码段的内存.(代码段是只读的,而且不允程序员获取代码段的地址,所以在c++中,尽量不为const分配数据段的内存,但是一旦取 ...

  6. ABP学习入门系列(六)(菜单和分页)

    1,菜单.在最新的abp3.1.2中 菜单栏是在左侧的如下图(上中下的结构),中间部分就是我们要添加菜单的地方. ABP集成了通用的创建和显示菜单的方式,在展示层web下的appstart文件夹下找到 ...

  7. Echart 改变X轴、Y轴、折线的颜色和数值

    在操作E-chart时需要根据需求改变颜色和属性 图1: option = { xAxis: { type: 'category', data: ['Mon', 'Tue', 'Wed', 'Thu' ...

  8. 机器学习classification_report方法及precision精确率和recall召回率 说明

    classification_report简介 sklearn中的classification_report函数用于显示主要分类指标的文本报告.在报告中显示每个类的精确度,召回率,F1值等信息. 主要 ...

  9. Java基础教程(10)--类

    一.声明类   你已经见过了以如下方式定义的类: class MyClass { // field, constructor, and method declarations }   上面是声明类的最 ...

  10. SpringBoot(二) Core Features: SpringApplication

    参考 文档: SpringApplication