亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統(tǒng) > iOS > 正文

iOS中你需要的彈窗效果總結大全

2019-10-21 18:39:37
字體:
來源:轉載
供稿:網(wǎng)友

前言

彈框是人機交互中常見的方式,常常出現(xiàn)于詢問、警示以及完成某個插入任務,常見于網(wǎng)頁端及移動端。彈框能使用戶有效聚焦于當前最緊急的信息,也可以在不用離開當前頁面的前提下,完成一些輕量的任務。

在我們的實際開發(fā)項目中,彈窗是必不可少的,很多時候我們用的是系統(tǒng)的AlertViewController,但是實際情況中,并不能滿足我們的開發(fā)需求,這個時候我們需要的就是自定義自己的彈窗效果。接下來我會寫一些自己的所封裝的彈窗效果。包括代理delegate回調,block 回調,xib新建view來創(chuàng)建我們需要的彈窗效果。

下面話不多說了,來一起看看詳細的介紹吧

官方思路

1.在我們自己動手之前一定要先看看官方是怎么封裝的,這樣我們寫出來的代碼才接近蘋果語言,看起來高大上。好的代碼一定是見名知意的,別人一看這個方法就知道大概我們通過這個方法可以得到什么樣的效果。

// ios8.0 之后UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"提示" message:@"message" preferredStyle:UIAlertControllerStyleAlert];UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil];UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"確定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {NSLog(@"確定");}];[alertController addAction:cancelAction];[alertController addAction:okAction];[self presentViewController:alertController animated:YES completion:nil];// ios8.0 之前UIAlertView * alertView = [[UIAlertView alloc] initWithTitle:@"Tittle" message:@"This is message" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:nil, nil];[alertView show];

因為在代碼量風格上,我還是比較喜歡老版本的彈窗,畢竟代碼上啊,一句話調用美滋滋。所以接下來我們封裝也是模仿官方開始.....

delegate

我們可以看到在蘋果官方中,我們需要通過識別用戶點擊某個按鈕來確定需要進一步的操作事件,這個時候是通過代理來實現(xiàn)的。代理的話,我們在熟悉不過了。

1、首先申明協(xié)議

#pragma mark - 協(xié)議@class HLAlertView;@protocol HLAlertViewDelegate<NSObject>- (void)alertViewDidClickButtonWithIndex:(NSInteger)index;@end

2、在viewController中遵循代理,設置代理 , 實現(xiàn)方法即可

<HLAlertViewDelegate>self.delegate = self;#pragma mark --- HLAlertViewDelegate-(void)alertViewDidClickButtonWithIndex:(NSInteger)index{if (index == AlertSureButtonClick) {[self alertSureButtonClick];}else{[self alertCauseButtonClick];}}

3、接下來就是實現(xiàn)我們封裝類的.h文件方法申明,以及.m的實現(xiàn)方法

//.h 文件#import <UIKit/UIKit.h>typedef enum : NSUInteger {AlertCauseButtonClick = 0,AlertSureButtonClick} AlertButtonClickIndex;#pragma mark - 協(xié)議@class HLAlertView;@protocol HLAlertViewDelegate<NSObject>- (void)alertViewDidClickButtonWithIndex:(NSInteger)index;@end@interface HLAlertView : UIView@property(nonatomic, weak) id <HLAlertViewDelegate> delegate;- (instancetype)initWithTittle:(NSString *)tittle message:(NSString *)message sureButton:(NSString *)sureBtn;- (void)show;@end
@interface HLAlertView()/** 彈窗主內容view */@property (nonatomic,strong) UIView *contentView;/** 彈窗標題 */@property (nonatomic,copy) NSString *title;/** message */@property (nonatomic,copy) NSString *message;/** 確認按鈕 */@property (nonatomic,copy) UIButton *sureButton;@end@implementation HLAlertView- (instancetype)initWithTittle:(NSString *)tittle message:(NSString *)message sureButton:(NSString *)sureBtn{if (self = [super init]) {self.title = tittle;self.message = message;[self sutUpView];}return self;}- (void)sutUpView{self.frame = [UIScreen mainScreen].bounds;self.backgroundColor = [UIColor colorWithWhite:0.5 alpha:0.85];[UIView animateWithDuration:0.5 animations:^{self.alpha = 1;}];//------- 彈窗主內容 -------//self.contentView = [[UIView alloc]init];self.contentView.frame = CGRectMake(0, 0, SCREEN_WIDTH - 80, 150);self.contentView.center = self.center;self.contentView.backgroundColor = [UIColor whiteColor];self.contentView.layer.cornerRadius = 6;[self addSubview:self.contentView];// 標題UILabel *titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, 10, self.contentView.width, 22)];titleLabel.font = [UIFont boldSystemFontOfSize:20];titleLabel.textAlignment = NSTextAlignmentCenter;titleLabel.text = self.title;[self.contentView addSubview:titleLabel];// messageUILabel *messageLable = [[UILabel alloc]initWithFrame:CGRectMake(0, 50, self.contentView.width, 22)];messageLable.font = [UIFont boldSystemFontOfSize:17];messageLable.textAlignment = NSTextAlignmentCenter;messageLable.text = self.message;[self.contentView addSubview:messageLable];// 取消按鈕UIButton * causeBtn = [UIButton buttonWithType:UIButtonTypeCustom];causeBtn.frame = CGRectMake(0, self.contentView.height - 40, self.contentView.width/2, 40);causeBtn.backgroundColor = [UIColor grayColor];[causeBtn setTitle:@"取消" forState:UIControlStateNormal];[causeBtn addTarget:self action:@selector(causeBtn:) forControlEvents:UIControlEventTouchUpInside];[self.contentView addSubview:causeBtn];// 確認按鈕UIButton * sureButton = [UIButton buttonWithType:UIButtonTypeCustom];sureButton.frame = CGRectMake(causeBtn.width, causeBtn.y, causeBtn.width, 40);sureButton.backgroundColor = [UIColor redColor];[sureButton setTitle:@"確定" forState:UIControlStateNormal];[sureButton addTarget:self action:@selector(processSure:) forControlEvents:UIControlEventTouchUpInside];[self.contentView addSubview:sureButton];}- (void)show{UIWindow *keyWindow = [UIApplication sharedApplication].keyWindow;[keyWindow addSubview:self];}- (void)processSure:(UIButton *)sender{if ([self.delegate respondsToSelector:@selector(alertViewDidClickButtonWithIndex:)]) {[self.delegate alertViewDidClickButtonWithIndex:AlertSureButtonClick];}[self dismiss];}- (void)causeBtn:(UIButton *)sender{if ([self.delegate respondsToSelector:@selector(alertViewDidClickButtonWithIndex:)]) {[self.delegate alertViewDidClickButtonWithIndex:AlertCauseButtonClick];}[self dismiss];}#pragma mark - 移除此彈窗/** 移除此彈窗 */- (void)dismiss{[self removeFromSuperview];}

通過代理的方式我們就完成了我們自己頁面的封裝了。

block彈窗

先看一下封裝之后我們的調用方式吧:

HLAlertViewBlock * alertView = [[HLAlertViewBlock alloc] initWithTittle:@"提示" message:@"通過Block彈窗回調的彈窗" block:^(NSInteger index) {if (index == AlertSureButtonClick) {[self alertSureButtonClick];}else{[self alertCauseButtonClick];}}];[alertView show];

相比代理的方式的話,我們還行喜歡這種block回調的,簡大氣接地氣啊。當然在我們需要處理邏輯多的時候,還是代理會比較好一點,具體環(huán)境下具體使用。

封裝成block的好處就是在我們構造方法的時候就可以實現(xiàn)我們將來的點擊方法,所以在自定義彈窗類的.h文件中,我們要申明block屬性。代碼

//.h@interface HLAlertViewBlock : UIView@property(nonatomic, copy) void (^buttonBlock) (NSInteger index);- (instancetype)initWithTittle:(NSString *)tittle message:(NSString *)message block:(void (^) (NSInteger index))block;- (void)show;@end
//.m@interface HLAlertViewBlock()/** 彈窗主內容view */@property (nonatomic,strong) UIView *contentView;/** 彈窗標題 */@property (nonatomic,copy) NSString *title;/** message */@property (nonatomic,copy) NSString *message;/** 確認按鈕 */@property (nonatomic,copy) UIButton *sureButton;@end@implementation HLAlertViewBlock- (instancetype)initWithTittle:(NSString *)tittle message:(NSString *)message block:(void (^)(NSInteger))block{if (self = [super init]) {self.title = tittle;self.message = message;self.buttonBlock = block;[self sutUpView];}return self;}

到此為止,我們的block彈窗申明方法也搞定了。

xib的封裝彈窗

iOS,彈窗

好處就是不用寫界面代碼了。

殊途同歸

還有一種實現(xiàn)彈窗效果的方法,不通過新建view而是Controller來實現(xiàn)的,就是新建一個透明的控制器。代碼如下

PopViewController * popVC = [[PopViewController alloc] init];UIColor * color = [UIColor blackColor];popVC.view.backgroundColor = [color colorWithAlphaComponent:0.85];popVC.modalPresentationStyle = UIModalPresentationOverCurrentContext;[self presentViewController:popVC animated:NO completion:nil];

更加簡單,邏輯也更加好處理一些。

最后附上demo地址:gibHub地址:https://github.com/MrBMask

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網(wǎng)的支持。


注:相關教程知識閱讀請移步到IOS開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
成年网站免费入口在线观看| 在线亚洲观看| 日韩成人一区| 欧美xxx.com| 在线成人高清不卡| 在线观看福利一区| 国产精品普通话对白| 欧美h版在线观看| 免费一级在线观看播放网址| 顶级嫩模一区二区三区| 亚洲青涩在线| 欧美bbbbxxxx| 国产伦精品一区二区三区视频痴汉| 青青青视频在线免费观看| 日韩中文字幕有码| 色是在线视频| 99视频在线观看免费| 欧美性生活影院| 四虎成人免费视频| 国产精品欧美极品| 香蕉视频黄色在线观看| 国产精品白浆视频免费观看| 97在线观看免费视频| 成人精品一区二区三区中文字幕| 国产精品主播一区二区| 污污网站在线看| 伊人国产在线| 欧美视频一区二区在线观看| 日韩网站在线| 伊人春色在线| 黄色18在线观看| 不卡高清视频专区| www.国产精品| 91抖音在线观看| 波多野结衣在线aⅴ中文字幕不卡| 国产精品中文久久久久久久| 亚洲精品97久久中文字幕无码| 国产真人真事毛片| 久久国产精品偷| 一区二区三区不卡在线观看| 日本猛少妇色xxxxx免费网站| 久久久久9999| 国产在线观看第一页| 国产一区二区三区不卡免费观看| 美女精品一区最新中文字幕一区二区三区| 玖玖爱这里只有精品| 热久久免费视频精品| 亚洲第一精品网站| 欧美精品中文字幕一区| 99国产精品99久久久久久粉嫩| 午夜在线视频一区二区区别| 一区二区三区午夜探花| 91国产免费视频| 亚洲欧美在线x视频| 免费看毛片网站| 天使と恶魔の榨精在线播放| 午夜18视频在线观看| 国产精品久久三区| 开心激情综合网| 杨幂一区二区三区免费看视频| 一个人看的www日本高清视频| 欧美片一区二区| 一二三四视频免费观看在线看| 欧美日韩精品一区二区三区视频播放| 伊人久久免费视频| 亚洲综合自拍一区| 免费观看一级视频| 在线免费黄色网| 日韩亚洲精品在线| 欧美视频免费看| 日韩三级在线观看视频| www.一区二区三区| 国产一区二区三区精彩视频| 亚洲一级淫片| 色一情一乱一伦一区二区三区丨| 久久精品国产亚洲5555| 无码人妻精品一区二区三区66| 6080亚洲精品一区二区| 久草国产视频| 91精品高清| 久久久午夜精品理论片中文字幕| 波多野结依一区| 隔壁人妻偷人bd中字| 三日本三级少妇三级99| 制服丝袜中文字幕在线观看| 91香蕉电影院| 在线欧美一区二区| 激情久久五月天| 久热精品视频在线观看| 伊人色在线视频| 欧美唯美清纯偷拍| 性感美女视频一二三| 国产寡妇树林野战在线播放| 欧美精品久久久久久久久久久| 亚洲久草在线视频| 91麻豆精东视频| 国外成人在线播放| 手机av免费观看| 69av.com| 亚洲欧美在线第一页| 美国一区二区三区在线播放| 一区二区电影在线观看| 久久久夜色精品亚洲| jjzz黄色片| 免费的黄色片| 日韩影院在线| 国产在线视频91| 99re视频| 精品女同一区二区三区在线观看| zztt21.su黑料网站| 高清不卡一区| 国产奶头好大揉着好爽视频| 日韩一级毛片| 久久久久久无码精品人妻一区二区| 51蜜桃传媒精品一区二区| 国产精品99久久免费| 91丨porny丨探花| 亚洲一区二区三区sesese| 国产精品一二一区| 影音先锋男人看片资源站| 亚洲成a人v欧美综合天堂麻豆| 欧美一区二区三区日韩视频| 小草在线视频在线免费视频| 亚洲最新免费视频| 国产欧美自拍视频| 欧美专区在线播放| 成人久久久精品乱码一区二区三区| а 天堂 在线| 天天干天天操av| 日本成人在线电影网| 国产高清亚洲一区| av色影在线看免费| 免费黄色片网站| 欧美三级小视频| 欧美激情综合在线| 99青草视频在线播放视| 亚洲综合av一区| 国产69精品久久app免费版| 成人aaaa| 色综合久久六月婷婷中文字幕| 国产精品流白浆视频| 粉嫩av一区二区三区粉嫩| 国产精品久久网站| 男人插曲女人的视频| 亚洲一二在线观看| 亚洲自拍偷拍网| 免费观看特级毛片| 国产视频在线一区| 91精品久久久久久蜜桃| 亚洲成成品网站| 国产精品视频一区二区三区四蜜臂| 欧美日韩激情视频在线观看| 欧美天堂亚洲电影院在线观看| 男女激情无遮挡| 欧美日韩国产成人在线| 国产精品99久久久久久动医院| 98精品国产自产在线观看| 国产一区二区三区成人| 羞羞污视频在线观看| 欧美一站二站| 99精品一区二区三区| 97视频com| 17c丨国产丨精品视频| 日本女优天堂99伊人| 日本高清精品| 国产精品99久久久久久似苏梦涵| 国产精品福利电影一区二区三区四区| 极品美女一区二区三区视频| 青青草社区在线| 亚洲综合日韩中文字幕v在线| 一区二区传媒有限公司| 精品众筹模特私拍视频| 少妇激情一区二区三区| 欧洲视频一区二区| 97成人精品区在线播放| 色综合天天狠狠| 又粗又大的机巴好爽欧美| 欧美日韩精品一区二区| 亚洲靠逼com| 精品久久人妻av中文字幕| 女人扒开双腿让男人捅| 日日噜噜夜夜狠狠久久波多野| 伊人精品在线观看| 性娇小13――14欧美| 成人在线视频一区| 麻豆国产入口在线观看免费| 91精品国产91久久综合| 日韩欧美在线一区二区三区| 成人在线视频首页| 国产三级欧美三级| 99久久久久久久久久| 国产精品久久久久久久久借妻| 亚洲欧美伊人| 激情五月婷婷六月| 免费无码国产精品| 久久久久97国产| 精品在线观看入口| 亚洲自拍另类| 欧美日韩综合一区二区| 免费影视亚洲| 国产在线视频网站| 日韩成人中文字幕在线观看| 91视频这里只有精品| 91成人免费视频| 欧美优质美女网站| 亚洲专区一区二区三区| 欧美日韩成人综合在线一区二区| 国产高清美女一级毛片久久| 女同毛片一区二区三区| 久久综合亚洲色hezyo国产| 丁香花高清视频完整版在线观看| 国产91色综合久久免费分享| 亚洲区免费影片| 欧美日产国产成人免费图片| www.欧美精品一二三区| 欧美最猛性xxxx| 亚洲av成人无码久久精品| 亚洲黄色在线网站| 真实的国产乱xxxx在线91| 国产福利一区二区三区在线视频| 青青国产在线视频| 日本久久精品一区二区| 嘿嘿视频在线观看| 深夜福利日韩在线看| 不卡亚洲精品| 天天免费亚洲黑人免费| 国产精品片aa在线观看| 成全电影播放在线观看国语| 性欧美xxxx大乳国产app| 欧美精品久久久久久久免费| 2019中文字幕在线视频| 韩国午夜理伦三级不卡影院| 日韩成人午夜电影| 91精品国产综合久久久久久久久久| 国产伦一区二区三区| 亚洲人成毛片在线播放| 国产精品乱码一区二区| 五月婷婷在线播放| 国产精品一区二区免费在线观看| 国产成+人+日韩+欧美+亚洲| 精品久久久久久亚洲国产300| 亚洲成人精品久久久| 成人激情四射网| 日韩精品亚洲元码| 国产欧美日韩在线视频| 97免费观看视频| 国产精品国产a级| 快播日韩欧美| 欧美天堂视频| 97中文在线| 欧美日本一道本| av黄色免费在线| 日本高清视频免费观看| 欧美麻豆精品久久久久久| 日韩av电影免费在线| 国产精品字幕| 91视频导航| av片在线观看免费| 先锋资源男人站| 日韩片电影在线免费观看| 欧美亚洲国产日韩2020| 日韩精品极品在线观看播放免费视频| 可以看的av网址| 超碰公开在线| 国产精品久久久久久久久久小说| 先锋影音av男人站| 日韩不卡中文字幕| 日韩黄色动漫| 9191久久久久久久久久久| 亚洲二区在线观看| 美女啪啪无遮挡免费久久网站| 视频一区二区在线| 91国内精品在线视频| 深夜免费福利视频| 久久精品二区三区| 国产精品亚洲色图| 草民福利视频| 中文字幕在线视频一区二区| 日韩中文字幕三区| 一卡二卡三卡日韩欧美| 九一久久久久久| 美腿丝袜一区二区三区| 国产剧情演绎av| 精品亚洲国产成av人片传媒| 深夜做爰性大片蜜桃| 国产毛片一区| 成人免费看片网址| 亚洲国产一区二区久久久777| 欧美电影影音先锋| 国产99在线播放| 亚洲精品中文综合第一页| av色综合网| 久久精品影视伊人网| 日韩国产精品久久| 在线播放91| www.亚洲色图.com| 亚洲少妇中出一区| 日本精品999| 69视频在线观看| 日本裸体美女视频| 精品视频一区二区在线观看| 在线精品视频在线观看高清| 亚洲日本成人| 亚洲第一精品电影| 国产又粗又猛又黄又爽| 欧美精品免费在线观看| 在线看免费av| 久久精彩免费视频| 91女厕偷拍女厕偷拍高清| 羞羞小视频视频| 成人av综合网| 黑鬼大战白妞高潮喷白浆| 成人美女黄网站| 国产999精品久久久久久绿帽| 亚洲自拍另类| 99精品电影| 亚洲视频在线网| 91麻豆精品秘密| 亚洲精品人成| 成人精品视频在线| 麻豆精品视频在线| 久久毛片亚洲| 国产剧情在线观看一区| 免费在线欧美视频| 亚洲精品456在线播放狼人| 中文字幕一区二区三区人妻电影| 激情av在线播放| 性欧美大胆高清视频|