maskView与CAGradientLayer那回事儿

maskView基本原理

  • png图片透明像素的原理
  • maskView可类比于多张png图片的叠加遮罩,原理类似
  • maskView是iOS8以上才有的,如果要考虑兼容低版本,用maskLayer替代
//使用maskView的情况
@property (nonatomic, strong)UIImageView *addImageView; //声明叠加图片Viewself.addImageView = [[UIImageView alloc]initWithFrame:CGRectMake(50, 50, 200, 200)];[self.view addSubview:self.addImageView];
self.addImageView.image = [UIImage imageNamed:@"base"];//一张底图
UIImageView *mask = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)];
mask.image = [UIImage imageNamed:@"mask"];//一张png图片,左边黑色,渐变到右边白色
self.addImageView.maskView = mask;//生成了叠加在一起一边半透明的图片,左边黑色部分正常显示,右边渐变白色显示模糊到无
注意:maskView并不能用addSubview来添加遮罩

maskView配合CAGradientLayer的使用

  • 用CAGradientLayer直接产生带透明像素通道的layer
  • 用maskView直接加载带CAGradientLayer的view
  • 可以通过对CAGradientLayer进行动画的操作实现动画效果
看实例代码
    self.addImageView = [[UIImageView alloc]initWithFrame:CGRectMake(50, 450, 200, 200)];[self.view addSubview:self.addImageView];self.addImageView.image = [UIImage imageNamed:@"base"];//一张底图//创建出渐变的layerCAGradientLayer *gradientLayer = [CAGradientLayer layer];gradientLayer.frame = self.addImageView.bounds;gradientLayer.colors = @[(__bridge id)[UIColor clearColor].CGColor,(__bridge id)[UIColor blackColor].CGColor,(__bridge id)[UIColor clearColor].CGColor];gradientLayer.locations = @[@(0.05),@(0.5),@(0.95)];//设置渐变方向gradientLayer.startPoint = CGPointMake(0, 0);gradientLayer.endPoint = CGPointMake(1, 0);//容器view ->用于加载创建出的CAGradientLayerUIView *containerView = [[UIView alloc]initWithFrame:self.addImageView.bounds];[containerView.layer addSublayer:gradientLayer];//设定maskViewself.addImageView.maskView = containerView;CGRect frame = containerView.frame;frame.origin.x -=200;containerView.frame = frame;//给maskView做动画效果[UIView animateWithDuration:3.f animations:^{//改变位移CGRect frame = containerView.frame;frame.origin.x += 400;//重新赋值containerView.frame = frame;}];

我们不仅可以使用CAGradientLayer创建的蒙版,我们还可以对他进行动画效果的设置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/247595.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mongoose操作mongodb

http://mongoosejs.com/docs/api.html#index-js mongoose是nodejs环境下操作mongodb的模块封装,使用mongoose之后,实际上只需要在mongodb中创建好数据库与用户,集合的定义、创建、操作等直接使用mongoose即可。 一、连接二、重要概念三、基本…

虚拟机上使用ghost xp

虚拟机ghost 1 先用启动项里的pq对虚拟机的硬盘格式化,然后最重要的一点就是 --右击--进阶-设定为作用然后执行2 重启一键安装到C盘就行了转载于:https://www.cnblogs.com/master-zhu/archive/2009/09/15/1567081.html

iOS11新增版本判断API

iOS11新增版本判断API iOS11版本现在有了简单的API,OC也开始支持swfit的available语法,不用再手写iOS版本判断了。 if (available(iOS 11.0, *)) {// 版本适配 } // 或者 #ifdef __IPHONE_11_0 #endif 目前没发现有iPhoneX的机型判断API&#xff0…

调试asp

response.Write(sqltext) response.End() response.Write(sqltext) response.End()转载于:https://www.cnblogs.com/master-zhu/archive/2009/09/21/1570816.html

vue滚动加载插件vue-infinite-scroll

vue-infinite-scroll插件可以无限滚动实现加载更多,其作用是是当滚动条滚动到距离底部的指定高度时触发某个方法。 https://github.com/ElemeFE/vue-infinite-scroll/ https://www.npmjs.com/package/vue-infinite-scroll 安装 cnpm i vue-infinite-scroll -S v…

实例适配ios11

不多bb&#xff0c;上码 #import "ViewController.h" #import "PersonViewModel.h" #import "Person.h" #import "ShowTableViewCell.h" #import <Masonry/Masonry.h> #import <MJRefresh/MJRefresh.h>interface ViewCon…

mac下iterm配色、半透明与样式设置

主要为了实现命令行颜色高亮与整个命令窗口半透明效果。 1、配色主题包下载 1、http://iterm2colorschemes.com/ 下载后解压&#xff0c;到iterm2中&#xff0c;左上角iTerm2->preferences->Profiles&#xff0c;右侧面板找到Colors选项&#xff0c;右下角展开Color Pr…

一个 Dubbo 服务启动要两个小时

前几天在测试环境碰到一个非常奇怪的与 dubbo 相关的问题&#xff0c;事后我在网上搜索了一圈并没有发现类似的帖子或文章&#xff0c;于是便有了这篇。 希望对还未碰到或正在碰到的朋友有所帮助。 现象 现象是这样的&#xff0c;有一天测试在测试环境重新部署一个 dubbo 应用的…

表单提交enctype参数详解之:application/x-www-form-urlencode和multipart/form-data

application/x-www-form-urlencode 我们在提交表单的时候&#xff0c;form表单参数中会有一个enctype的参数。enctype指定了HTTP请求的Content-Type。 默认情况下&#xff0c;HTML的form表单的enctypeapplication/x-www-form-urlencoded。 application/x-www-form-urlencoded是…

内网端口映射工具

由于开发微信需要一个公网域名&#xff0c;需要将本地端口映射到外网域名&#xff0c;最热的工具是ngrok&#xff0c;但被微信屏蔽了&#xff0c;这里使用的是natapp&#xff0c;环境是mac&#xff0c;windows下可使用nat123、花生壳等工具实现同样功能。 简单记录一下过程。 …

iOS----------iPhone导出手机所有短信

第一步&#xff1a;手机连接到itunes 选择本电脑备份 备份的时候不要加密 然后立即备份 第二步&#xff1a;前往文件夹&#xff0c;找到itunes的备份路径~/Library/Application Support/MobileSync/Backup 在这目录下搜索 3d0d开头的文件&#xff0c;这就是 iPhone 短信的…

跨站点脚本(XSS)

1. 简介 跨站点脚本(XSS)是当前web应用中最危险和最普遍的漏洞之一。安全研究人员在大部分最受欢迎的网站,包括Google, Facebook, Amazon, PayPal等网站都发现这个漏洞。如果你密切关注bug赏金计划,会发现报道最多的问题属于XSS。为了避免跨站脚本,浏览器也有自己的过滤器,但安…

spring webscoket服务端使用记录

记录spring4中websocket的使用方式 pom jar包配置 <dependency> <groupId>org.springframework</groupId> <artifactId>spring-websocket</artifactId> <version>${spring.version}</version> </dependency> <depen…

MVC是什么?(转载)

MVC (Modal View Controler)本来是存在于Desktop程序中的&#xff0c;M是指数据模型&#xff0c;V是指用户界面&#xff0c;C则是控制器。使用MVC的目的是将M和V的实现代码分离&#xff0c;从而使同一个程序可以使用不同的表现形式。比如一批统计数据你可以分别用柱状图、饼图来…

CSRF攻击原理及防御

CSRF攻击原理及防御 一、CSRF攻击原理 CSRF是什么呢&#xff1f;CSRF全名是Cross-site request forgery&#xff0c;是一种对网站的恶意利用&#xff0c;CSRF比XSS更具危险性。想要深入理解CSRF的攻击特性我们有必要了解一下网站session的工作原理。   session我想大家都不…

H3C FTP配置示例

转载于:https://www.cnblogs.com/fanweisheng/p/11156596.html

用dotnet自带的mail类发邮件出现的问题

在使用dotnet自带的mail类发送邮件的时候&#xff0c;因为默认的smtp端口是25&#xff0c;如果更改了smtp的端口号&#xff0c;则需加上MailMessage msg &#xff1d; new MailMessage();msg.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport&…

Angular CLI ng 指令指南

Angular CLI 使用教程指南参考 Angular CLI 现在虽然可以正常使用但仍然处于测试阶段. Angular CLI 依赖 Node 4 和 NPM 3 或更高版本. 安装

spring源码阅读(1/4) - Bean生成

上午去缴了上次没带驾驶证的扣分罚款&#xff0c;最近在图书馆没事就看曾国藩家书&#xff0c;曾国藩说人要明强。光强没有用&#xff0c;你要明强。也就是说要强的有道理。曾国藩又说&#xff0c;做学问不能做死学问&#xff0c;做学问其实很重要的事就是能懂得孝悌&#xff0…

NodeJS解决跨域问题:Access-Control-Allow-Origin

今天在玩vue-resource时&#xff0c;后台使用nodejs来提供数据&#xff0c;由于需要跨域&#xff0c;在网上也找到了解决方法。 vue-resource代码(其实就是ajax技术)&#xff1a; this.$http.get({url:"http://localhost:3000/getdata"}) .then(function (data) {co…