ios_弹框提示
来源:互联网 发布:端口辅助是什么意思 编辑:程序博客网 时间:2024/05/18 19:21
- 应公司要求需要写个类似安卓提示框的东西.其实不想写…没办法人家要求的.
- 就用了两个知识点
- 延迟执行某个方法(GCD实现)
- 单例
- demo地址(git克隆) : https://code.csdn.net/alex_birdlion/label_alertview.git
- 或者直接下载: https://code.csdn.net/alex_birdlion/label_alertview/tree/master
- 思路: 将label加在keyWindow上,创建单例利用单例属性isShowing来防止多个label叠加在keyWindow上.用GCD延迟执行使label消失的方法,再将isShowing状态改为NO->即消失状态,下次调用可以弹出.
#import "HBToast.h"#define kScreenB [UIScreen mainScreen].bounds#define kScreenH [UIScreen mainScreen].bounds.size.height#define kScreenW [UIScreen mainScreen].bounds.size.width@implementation HBToast//创建单例是为了判断当前是否在显示lbl提示框.isShowing+(instancetype)sharedTost{ static HBToast * instance = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ instance = [self new]; }); return instance;}+(void)bb_showStatus:(NSString *)status withTime:(CGFloat)time{ HBToast * toast = [HBToast sharedTost]; if (!toast.isShowing) { toast.isShowing = YES; UIWindow * keyWindow = [UIApplication sharedApplication].keyWindow; UILabel * lbl = [UILabel new]; lbl.text = status; lbl.backgroundColor = [UIColor blackColor]; lbl.alpha = 0.7; lbl.layer.cornerRadius = 3.0; lbl.layer.masksToBounds = YES; lbl.textColor = [UIColor whiteColor]; lbl.font = [UIFont systemFontOfSize:16]; lbl.textAlignment = NSTextAlignmentCenter; CGFloat lblH = 27; CGFloat lblW = 150; CGFloat lblY = kScreenH - lblH - 60; CGFloat lblX = (kScreenW - lblW) * 0.5; lbl.frame = CGRectMake(lblX, lblY, lblW, lblH); [keyWindow addSubview:lbl]; NSLog(@"显示"); //通过GCD方式延迟执行 移除lbl dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(time * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ NSLog(@"隐藏"); toast.isShowing = NO; [lbl removeFromSuperview]; }); }}+(void)bb_showStatus:(NSString *)status{ HBToast * toast = [HBToast sharedTost]; if (!toast.isShowing) { toast.isShowing = YES; UIWindow * keyWindow = [UIApplication sharedApplication].keyWindow; UILabel * lbl = [UILabel new]; lbl.text = status; lbl.backgroundColor = [UIColor blackColor]; lbl.alpha = 0.7; lbl.layer.cornerRadius = 3.0; lbl.layer.masksToBounds = YES; lbl.textColor = [UIColor whiteColor]; lbl.font = [UIFont systemFontOfSize:16]; lbl.textAlignment = NSTextAlignmentCenter; CGFloat lblH = 27; CGFloat lblW = 150; CGFloat lblY = kScreenH - lblH - 60; CGFloat lblX = (kScreenW - lblW) * 0.5; lbl.frame = CGRectMake(lblX, lblY, lblW, lblH); [keyWindow addSubview:lbl]; NSLog(@"显示"); //通过GCD方式延迟执行 移除lbl dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ NSLog(@"隐藏"); toast.isShowing = NO; [lbl removeFromSuperview]; }); }}@end
1 0
- ios_弹框提示
- iOS_开发经验总结:键盘遮挡输入框时的解决方法
- IOS_基础知识
- IOS_多线程
- iOS_适配
- iOS_视图
- iOS_知识点
- iOS_笔记
- IOS_ CAKeyframeAnimation
- IOS_函数
- iOS_二维码
- iOS_传感器
- iOS_ UISearchBarDelegate
- iOS_多线程
- 弹框提示
- ShowPopup无法弹框提示
- 条款弹框提示实现
- iOS_手机抓包
- 推荐引擎相关算法 - 协同过滤 及 Mahout的应用
- python2.7爬京东商城
- 学生管理系统
- 欢迎使用CSDN-markdown编辑器
- BZOJ3875【JSOI2014/AHOI2014】骑士游戏(knight) 贪心求解
- ios_弹框提示
- 开坑纪念
- 方格取数问题:双线动态规划
- linux下查看线程-以及查看所占用的cpu
- gridster.js–可拖拽的网格插件
- Android 获取控件高度宽度三种方法,防止0的出现
- 一个tomcat下配置多个web应用
- 三月感想
- jQuery使用ajaxSubmit()提交表单示例