将CAGradientLayer用作maskView的遮罩图层

说明

CAGradientLayer可以用作alpha遮罩,供maskView使用,这两种东西都是非常偏门的东西,但是,偏门不代表功能不强大,我们可以用CAGradientLayer制作出非常牛逼的动画效果,此博文,本人抛砖引玉简易介绍怎么将CAGradientLayer与maskView联系上。后续博文会陆续扩展并写出更好的控件。

只有完美的UI交互效果才能够为功能强大的app锦上添花,本人致力于研究分析苹果开发中那些巨牛逼但却无人问津的冷门特效。

效果图

源码

//
// CAGradientView.h
// AlphaView
//
// Created by YouXianMing on 15/5/4.
// Copyright (c) 2015年 YouXianMing. All rights reserved.
// #import <UIKit/UIKit.h> @interface CAGradientView : UIView @property (nonatomic, strong) NSArray *colors;
@property (nonatomic, strong) NSArray *locations;
@property (nonatomic) CGPoint startPoint;
@property (nonatomic) CGPoint endPoint; - (void)alphaType; @end
//
// CAGradientView.m
// AlphaView
//
// Created by YouXianMing on 15/5/4.
// Copyright (c) 2015年 YouXianMing. All rights reserved.
// #import "CAGradientView.h" @interface CAGradientView () {
CAGradientLayer *_gradientLayer;
} @end @implementation CAGradientView /**
* 修改当前view的backupLayer为CAGradientLayer
*
* @return CAGradientLayer类名字
*/
+ (Class)layerClass {
return [CAGradientLayer class];
} - (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
_gradientLayer = (CAGradientLayer *)self.layer;
}
return self;
} - (void)alphaType {
self.colors = @[[UIColor clearColor], [UIColor blackColor], [UIColor clearColor]];
self.locations = @[@(0.25), @(0.5), @(0.75)];
self.startPoint = CGPointMake(, );
self.endPoint = CGPointMake(, );
} /**
* 重写setter,getter方法
*/
@synthesize colors = _colors;
- (void)setColors:(NSArray *)colors {
_colors = colors; // 将color转换成CGColor
NSMutableArray *cgColors = [NSMutableArray array];
for (UIColor *tmp in colors) {
id cgColor = (__bridge id)tmp.CGColor;
[cgColors addObject:cgColor];
} // 设置Colors
_gradientLayer.colors = cgColors;
}
- (NSArray *)colors {
return _colors;
} @synthesize locations = _locations;
- (void)setLocations:(NSArray *)locations {
_locations = locations;
_gradientLayer.locations = _locations;
}
- (NSArray *)locations {
return _locations;
} @synthesize startPoint = _startPoint;
- (void)setStartPoint:(CGPoint)startPoint {
_startPoint = startPoint;
_gradientLayer.startPoint = startPoint;
}
- (CGPoint)startPoint {
return _startPoint;
} @synthesize endPoint = _endPoint;
- (void)setEndPoint:(CGPoint)endPoint {
_endPoint = endPoint;
_gradientLayer.endPoint = endPoint;
}
- (CGPoint)endPoint {
return _endPoint;
}
@end
//
// ViewController.m
// AlphaView
//
// Created by YouXianMing on 15/5/4.
// Copyright (c) 2015年 YouXianMing. All rights reserved.
// #import "ViewController.h"
#import "CAGradientView.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; // 加了mask的view
UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(, , , )];
imageView.image = [UIImage imageNamed:@"base"];
[self.view addSubview:imageView]; CAGradientView *gradientView = [[CAGradientView alloc] initWithFrame:imageView.bounds];
[gradientView alphaType];
imageView.maskView = gradientView; // 对照组
UIImageView *baseImageView = [[UIImageView alloc] initWithFrame:CGRectMake(, + + , , )];
baseImageView.image = [UIImage imageNamed:@"base"];
[self.view addSubview:baseImageView];
} @end

简易分析

将CAGradientLayer用作maskView的遮罩图层的更多相关文章

  1. 透明遮罩图层VS高斯模糊滤镜 效果分析

    前端流行布局中最常见的弹出图层有popup, 对话框, tooltip等, 他们都使用了新的图层,但是实现办法各不相同, 有 的是通过半通明的黑白图层实现的, 有的是通过滤镜实现的, 我们来研究一下两 ...

  2. OCiOS开发:CAGradientLayer 渐变色

    OCiOS开发:CAGradientLayer 渐变色 CAGradientLayer 简介 CAGradientLayer是CALayer图层类的子类,用于处理渐变色的层结构. CAGradient ...

  3. 通过CAGradientLayer制作渐变色效果(转)

    转载自:http://blog.it985.com/7986.html 看了极客学院的视频之后写的一篇博客,觉得不错,还是作为笔记使用. 简单介绍一下CAGradientLayer吧. Gradien ...

  4. CSS3裁剪与遮罩解析

    一.用途 CSS3裁剪与遮罩(Clipping and Masking)用来隐藏元素的一部分而显示另一部分 二.区别 CSS3裁剪与遮罩(Clipping and Masking)用来隐藏元素的一部分 ...

  5. CSS3基础(4)——CSS3 渲染属性

    一. CSS3 计数器详解    CSS3计数器(CSS Counters)可以允许我们使用CSS对页面中的任意元素进行计数,实现类似于有序列表的功能. 与有序列表相比,它的突出特性在于可以对任意元素 ...

  6. Flash动画

    Flash (交互式矢量图和Web动画标准) Flash是由macromedia公司推出的交互式矢量图和 Web 动画的标准,由Adobe公 司收购.做Flash动画的人被称之为闪客.网页设计者使用 ...

  7. iOS—Mask属性的使用

    Mask属性介绍 Mask平时用的最多的是masksToBounds 吧. 其实除此以外Mask使用场景很多,看完之后你会发现好真是好用的不要不要的... 先来了解下Mask属性到底是什么? Mask ...

  8. [Quick-x]制作新手引导高亮区域方法之二:裁剪模式

    demo下载:https://github.com/chenquanjun/Quick-x-HighlightArea 2.裁剪模式 (1)创建裁剪对象 , , ) --非高亮区域颜色 local b ...

  9. OpenCV探索之路(十一):轮廓查找和多边形包围轮廓

    Canny一类的边缘检测算法可以根据像素之间的差异,检测出轮廓边界的像素,但它没有将轮廓作为一个整体.所以要将轮廓提起出来,就必须将这些边缘像素组装成轮廓. OpenCV中有一个很强大的函数,它可以从 ...

随机推荐

  1. test11

    -Xms512m-Xmx512m-XX:PermSize=512-XX:MaxPermSize=512

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

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

  3. Nodejs学习笔记(十五)—Node.js + Koa2 构建网站简单示例

    前言 前面一有写到一篇Node.js+Express构建网站简单示例:http://www.cnblogs.com/zhongweiv/p/nodejs_express_webapp.html 这篇还 ...

  4. koa2开发入门

    一.koa2入门 1.创建koa2工程 首先,我们创建一个目录hello-koa并作为工程目录用VS Code打开.然后,我们创建app.js,输入以下代码: // 导入koa,和koa 1.x不同, ...

  5. 在你的 Rails App 中开启 ETag 加速页面载入同时节省资源

    转自http://huacnlee.com/blog/use-etag-in-your-rails-app-to-speed-up-loading/ 什么是 ETag 网上关于 ETag 的解释有很多 ...

  6. Hive是什么

    Hive是什么1)Hive 是建立在Hadoop (HDFS/MR)上的用于管理和查询结果化/非结构化的数据仓库:2)一种可以存储.查询和分析存储在Hadoop 中的大规模数据的机制:3)Hive 定 ...

  7. H5如何用Canvas画布生成并保存带图片文字的新年快乐的海报

    摘要:初略算了算大概有20天没有写博客了,原本是打算1月1号元旦那天写一个年终总结的,博客园里大佬们都在总结过去,迎接将来,看得我热血沸腾,想想自己也工作快2年了,去年都没有去总结一下,今年势必要总结 ...

  8. C# 接口用法

    一.接口定义 接口是指一组函数成员而不实现它们的引用类型,只能由类和结构来是实现,接口的作用就不阐述了 二.声明接口 interface IMyInterface //interface 是关键字,后 ...

  9. 常常忘记但是很重要的sql语句

    一.基础1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份 ...

  10. Activiti - 设置会签

    前些天在群里聊工作流和Activiti,群里有人分享了自己的工作流引擎开源项目,大伙纷纷问这问那(比如为什么突然自己搞个process engine.有没有eclipse plugin.能不能绘制流程 ...