maskView與CAGradientLayer詳解

#maskView基本原理
- png圖片透明像素的原理
- maskView可類比于多張png圖片的疊加遮罩,原理類似
- maskView是iOS8以上才有的,如果要考慮兼容低版本,用maskLayer替代


```
//使用maskView的情況
@property (nonatomic, strong)UIImageView *addImageView; //聲明疊加圖片View


self.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"];//一張底圖
? ? //創建出漸變的layer
? ? CAGradientLayer *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 ->用于加載創建出的CAGradientLayer
? ? UIView *containerView = [[UIView alloc]initWithFrame:self.addImageView.bounds];
? ? [containerView.layer addSublayer:gradientLayer];
? ? //設定maskView
? ? self.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.pswp.cn/news/247598.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247598.shtml
英文地址,請注明出處:http://en.pswp.cn/news/247598.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

nodejs的啟動方式

1、原始node命令 直接命令行中使用node命令 node xxx.js 或者安裝nodemon,使用nodemon啟動方便在開發階段熱部署代碼改動 npm i nodemon -G nodemon xxx.js 2、webstorm方式 webstorm中,需要執行的文件的上,右鍵->run,右…

win7rc 序列號- 10/21之前

安裝介紹:http://www.microsoft.com/china/windows/windows-7/download.aspx 注冊獲得序列號:http://technet.microsoft.com/zh-cn/evalcenter/dd353205.aspx?ITPIDmscomsc在 2009 年 10 月 21 日之前,您仍可以通過注冊來獲取產品密鑰或查找…

maskView與CAGradientLayer那回事兒

maskView基本原理 png圖片透明像素的原理maskView可類比于多張png圖片的疊加遮罩,原理類似maskView是iOS8以上才有的,如果要考慮兼容低版本,用maskLayer替代 //使用maskView的情況 property (nonatomic, strong)UIImageView *addImageView;…

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&…