iOS學習—制作全局遮罩

?在.h文件中線聲明show()方法

- (void)show;

.m文件中添加全屏遮罩,在遮罩上添加了一個選擇框并添加了底部彈出的動畫,可自行在其中添加tableview、pickerview等其他視圖,并添加了點擊選擇框視圖外區域隱藏

#import "MaskView.h"@interface MaskView()@property (nonatomic ,strong) UIView *deliverView; //底部View
@property (nonatomic ,strong) UIView *BGView; //遮罩@end@implementation MaskView- (instancetype)initWithFrame:(CGRect)frame {if ([super initWithFrame:frame]) {}return self;
}- (void)appearClick {// ------全屏遮罩self.BGView = [[UIView alloc] init];self.BGView.frame = [[UIScreen mainScreen] bounds];self.BGView.tag = 100;self.BGView.backgroundColor = [HexColor(@"#000000") colorWithAlphaComponent:0.0];self.BGView.opaque = NO;//--UIWindow的優先級最高,Window包含了所有視圖,在這之上添加視圖,可以保證添加在最上面UIWindow *appWindow = [[UIApplication sharedApplication] keyWindow];[appWindow addSubview:self.BGView];// ------給全屏遮罩添加的點擊事件UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(exitClick)];gesture.numberOfTapsRequired = 1;gesture.cancelsTouchesInView = NO;[self.BGView addGestureRecognizer:gesture];[UIView animateWithDuration:0.3 animations:^{self.BGView.backgroundColor = [HexColor(@"#000000") colorWithAlphaComponent:0.24];}];// ------底部彈出的Viewself.deliverView = [[UIView alloc] init];
//    self.deliverView.frame = CGRectMake(0, SCREEN_WIDTH, SCREEN_WIDTH, 306);ViewRadius(self.deliverView, 16);self.deliverView.backgroundColor = myCellColor;[appWindow addSubview:self.deliverView];[self.deliverView mas_makeConstraints:^(MASConstraintMaker *make) {make.bottom.mas_equalTo(0);make.width.mas_equalTo(kWidth);make.height.mas_equalTo(306);}];// ------View出現動畫self.deliverView.transform = CGAffineTransformMakeTranslation(0.01, SCREEN_HEIGHT);[UIView animateWithDuration:0.5 animations:^{self.deliverView.transform = CGAffineTransformMakeTranslation(0.01, 0.01);}];[self.deliverView addSubview:self.tableView];[self.tableView mas_makeConstraints:^(MASConstraintMaker *make) {make.top.mas_equalTo(18);make.left.mas_equalTo(0);make.width.mas_equalTo(kWidth);make.height.mas_equalTo(48 * 5);}];}
/*** 功能: View退出*/
- (void)exitClick {NSLog(@"====");[UIView animateWithDuration:0.5 animations:^{self.deliverView.transform = CGAffineTransformMakeTranslation(0.01, SCREEN_HEIGHT);self.deliverView.alpha = 0.2;self.BGView.alpha = 0;} completion:^(BOOL finished) {[self.BGView removeFromSuperview];[self.deliverView removeFromSuperview];}];
}@end

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/39233.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39233.shtml
英文地址,請注明出處:http://en.pswp.cn/news/39233.shtml

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

相關文章

Java:PO、VO、BO、DO、DAO、DTO、POJO

💗wei_shuo的個人主頁 💫wei_shuo的學習社區 🌐Hello World ! Java:PO、VO、BO、DO、DAO、DTO、POJO PO持久化對象(Persistent Object) PO是持久化對象,用于表示數據庫中的實體或表…

tauri-vue:快速開發跨平臺軟件的架子,支持自定義頭部UI拖拽移動和窗口陰影效果

Tauri Vue Typescript 一個使用 taurivuets 開發跨平臺軟件的模板,支持窗口頭部自定義 UI 和拖拽和窗口陰影,不用再自己做適配了,拿來即用,非常 nice。而且已經封裝好了 tauri 的 http 請求工具,省去很多彎路。開源…

分布式 - 消息隊列Kafka:Kafka消費者分區再均衡(Rebalance)

文章目錄 01. Kafka 消費者分區再均衡是什么?02. Kafka 消費者分區再均衡的觸發條件?03. Kafka 消費者分區再均衡的過程?04. Kafka 如何判定消費者已經死亡?05. Kafka 如何避免消費者的分區再均衡?06. Kafka 消費者分區再均衡有什…

UglifyJS 和JShaman相比有什么不同?都可以進行js混淆加密嗎?

UglifyJS 和JShaman相比有什么不同? UglifyJS主要功能是壓縮JS代碼,減小代碼體積;JShaman是專門用于對JS代碼混淆加密,目的是讓JS代碼變的不可讀、混淆功能邏輯、加密代碼中的隱秘數據或字符,是用于代碼保護的。 因此…

java.lang.NoClassDefFoundError: org/apache/tez/dag/api/TezConfiguration

錯誤: java.lang.NoClassDefFoundError: org/apache/tez/dag/api/TezConfigurationat org.apache.hadoop.hive.ql.exec.tez.TezSessionPoolSession$AbstractTriggerValidator.startTriggerValidator(TezSessionPoolSession.java:74)at org.apache.hadoop.hive.ql.e…

音視頻技術開發周刊 | 306

每周一期,縱覽音視頻技術領域的干貨。 新聞投稿:contributelivevideostack.com。 人工智能研究人員聲稱,通過Zoom音頻檢測擊鍵的準確率為93% 通過記錄按鍵并訓練深度學習模型,三位研究人員聲稱,基于單個按鍵的聲音特征…

eclipse 導入項目js報錯問題

eclipse 導入項目后會出現項目中的js文件報錯(紅叉),如下圖所示,有時候報錯的文件很多,需要集中處理。 解決辦法: 右鍵項目名稱》Properties》MyEclipse》JavaScript》Include Path,在右側選擇“…

vim鍵盤圖

國外:http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html,原創,有SVG圖,有分步驟的圖。 國內翻譯:[https://blog.csdn.net/qq_41052753/article/details/101031847 有幾個配色,很高清&…

【華為Datacom 綜合拓撲案例—分享篇】

拓撲圖 題目要求 實驗要求: 1、PC1\PC2\PC3\PC4采用DHCP自動獲取IP地址,SW5作為服務器,SW3和SW4作為中繼 創建地址池ip pool huawei1和ip pool huawei2,租期都為2天 2、SW3與SW4做鏈路聚合,采用LACP模式。SW3作為主…

【Java 集合框架API接口】Collection,List,Set,Map,Queue,Deque

博主:_LJaXi Or 東方幻想郷 專欄: Java | 從跨行業到跨平臺 開發工具:IntelliJ IDEA 2021.1.3 Java集合框架 API接口 Collection接口List接口HashSet, TreeSetSet接口使用 HashSet 實現使用 TreeSet 實現 HashMap、TreeMapMap接口…

SQL-每日一題【1341. 電影評分】

題目 表:Movies 表:Users 請你編寫一個解決方案: 查找評論電影數量最多的用戶名。如果出現平局,返回字典序較小的用戶名。查找在 February 2020 平均評分最高 的電影名稱。如果出現平局,返回字典序較小的電影名稱。 …

Nokia5110使用方法及實例編寫51單片機

文章目錄 Nokia5110實物圖引腳和原理圖51單片機實例軟件模擬SPI實現控制Nokia5110顯示字符發送字節時序圖(圖片太多了,關鍵圖片已截取出來)初始化需要配置實例編寫回顧接線結束Nokia5110 Nokia是諾基亞拆下來的屏幕。使用SPI控制 84x48 的點陣 LCD,可以顯示 4 行漢字,采用…

ZZULIOJ 1194: 總成績排序(結構體專題),Java

ZZULIOJ 1194: 總成績排序(結構體專題),Java 題目描述 有一學生成績表,包括學號、姓名、3門課程成績。請按如下規則排序:按總成績降序排序,若總成績相同,則按姓名升序排序。 輸入 首先輸入一…

MySQL 約束

查看約束 select * from information_schema.table_constraints where table_name要查看的表名按約束的作用范圍 列級約束: 將此約束聲明在對應字段的后面 表級約束:在表中所有字段都聲明完,在所有字段的后面聲明的約束,可以聲明…

屏蔽惡意域名的DNS查詢

因為有一些惡意域名, 已經在防火墻上做了封禁了, 但是如果收到中毒主機的請求, 還是要去做一次DNS查詢, 因此被上級單位通告, 因此想把惡意域名的DNS查詢封禁做到防火墻下聯的AC上面, 一方面因為防火墻的策略優先級DNS代理比較靠后, 另一方面也是為了減小防火墻壓力, 簡化配置:…

【leetcode】鏈表part2

24. 兩兩交換鏈表中的節點 迭代方法 public static ListNode swapPairs(ListNode head) {// 輸入:head [1,2,3,4]// 輸出:[2,1,4,3]ListNode dummy new ListNode(0);dummy.next head;ListNode cur dummy;while (cur.next ! null && cur.ne…

數據結構的樹存儲結構

數據結構的樹存儲結構 之前介紹的所有的數據結構都是線性存儲結構。本章所介紹的樹結構是一種非線性存儲結構,存儲的是具有“一對多”關系的數據元素的集合。 (A) (B) 圖 1 樹的示例 圖 …

【Java】2021 RoboCom 機器人開發者大賽-高職組(復賽)題解

7-8 人工智能打招呼 號稱具有人工智能的機器人,至少應該能分辨出新人和老朋友,所以打招呼的時候應該能有所區別。本題就請你為這個人工智能機器人實現這個功能:當它遇到陌生人的時候,會說:“Hello X, how are you?”其…

chatglm2-6b模型在9n-triton中部署并集成至langchain實踐 | 京東云技術團隊

一.前言 近期, ChatGLM-6B 的第二代版本ChatGLM2-6B已經正式發布,引入了如下新特性: ①. 基座模型升級,性能更強大,在中文C-Eval榜單中,以51.7分位列第6; ②. 支持8K-32k的上下文&#xff1b…

三種目標檢測方法(基于傳統數字圖像處理的識別方法、基于傳統機器學習的識別方法和基于深度學習的識別方法)的區別

問題描述:圖像檢測分為了基于傳統數字圖像處理的識別方法、基于傳統機器學習的識別方法和基于深度學習的識別方法,但是有時迷惑三者的區別是什么呢? 問題解答: 第一,基于傳統數字圖像處理的識別方法和其他兩者的區分…