通过自定义window来实现提示框效果
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
@interface ZMStatuBarHud : NSObject
//成功时候显示消息
+ (void)showSuccess:(NSString *)msg;
//失败的时候显示消息
+ (void)showError:(NSString *)msg;
//加载的时候显示 调用此方法想要隐藏需自己调用hide方法
+ (void)showLoading:(NSString *)msg;
//隐藏提示框
+ (void)hide;
//显示信息
+ (void)showMessage:(NSString *)msg;
//自定义提示框
+ (void)showMessage:(NSString *)msg image:(UIImage *)image;
@end
//
// ZMStatuBarHud.m
// 状态栏HUD232
//
// Created by 张明 on 16/3/7.
// Copyright © 2016年 张明. All rights reserved.
//
#define MMfont [UIFont systemFontOfSize:13]
#import "ZMStatuBarHud.h"
static UIWindow *window_;
static NSTimer *timer_;
//消息动画隐藏时间
static CGFloat const MMMessageDuration = 0.25;
@implementation ZMStatuBarHud
/*创建窗口*/
+ (void)setUpWindow
{
CGFloat windowH = 20;
CGRect frame = CGRectMake(0, -windowH, [UIScreen mainScreen].bounds.size.width, windowH);
window_.hidden = YES;
window_ = [[UIWindow alloc]init];
window_.frame = frame;
window_.hidden = NO;
window_.windowLevel = UIWindowLevelAlert;
window_.backgroundColor = [UIColor blackColor];
frame.origin.y = 0;
[UIView animateWithDuration:MMMessageDuration animations:^{
window_.frame = frame;
}];
}
+ (void)showMessage:(NSString *)msg image:(UIImage *)image
{
[timer_ invalidate];
//添加按钮
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
[button setImage:image forState:UIControlStateNormal];
[button setTitle:msg forState:UIControlStateNormal];
button.titleLabel.font = MMfont;
if (image) {
button.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);
}
button.frame = window_.bounds;
[window_ addSubview:button];
timer_ = [NSTimer scheduledTimerWithTimeInterval:MMMessageDuration target:self selector:@selector(hide) userInfo:nil repeats:NO];
}
+ (void)hide
{
[UIView animateWithDuration:MMMessageDuration animations:^{
CGRect frame = window_.frame;
frame.origin.y = -frame.size.height;
window_.frame = frame;
} completion:^(BOOL finished) {
window_ = nil;
timer_ = nil;
}];
}
+ (void)showMessage:(NSString *)msg
{
[self showMessage:msg image:nil];
}
+ (void)showSuccess:(NSString *)msg
{
[self showMessage:msg image:[UIImage imageNamed:@"check"]];
}
+ (void)showError:(NSString *)msg
{
[self showMessage:msg image:[UIImage imageNamed:@"fault"]];
}
+ (void)showLoading:(NSString *)msg
{
[timer_ invalidate];
timer_ = nil;
[self setUpWindow];
UILabel *label = [[UILabel alloc]init];
label.font = MMfont;
label.frame = window_.bounds;
label.textAlignment = NSTextAlignmentCenter;
label.text = msg;
label.textColor = [UIColor whiteColor];
[window_ addSubview:label];
//加载圈圈
UIActivityIndicatorView *loadView = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
[loadView startAnimating];
CGFloat msgW = [msg sizeWithAttributes:@{NSFontAttributeName:MMfont}].width;
CGFloat centX = (window_.frame.size.width - msgW)*0.5 -20;
CGFloat centY = window_.frame.size.height*0.5;
loadView.center = CGPointMake(centX, centY)
;
[window_ addSubview:loadView];
}
@end
通过自定义window来实现提示框效果的更多相关文章
- 【转】提示框第三方库之MBProgressHUD iOS toast效果 动态提示框效果
原文网址:http://www.zhimengzhe.com/IOSkaifa/37910.html MBProgressHUD是一个开源项目,实现了很多种样式的提示框,使用上简单.方便,并且可以对显 ...
- JS组件Bootstrap实现弹出框和提示框效果代码
这篇文章主要介绍了JS组件Bootstrap实现弹出框和提示框效果代码,对弹出框和提示框感兴趣的小伙伴们可以参考一下 前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编 ...
- 单一按钮显示/隐藏&&提示框效果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- WPF提示框效果
WPF提示框效果 1,新建WPF应用程序 2,添加用户控件Message 3,在Message中编写如下代码 <Border x:Name="border" BorderTh ...
- div+css实现圆形div以及带箭头提示框效果
.img{ width:90px; height:90px; border-radius:45px; margin:0 40%; border:solid rgb(100,100,100) 1px;& ...
- 基于JQuery 的消息提示框效果代码
提示框效果 一下是封装到 Jquery.L.Message.js 中的JS文件内容 var returnurl = ''; var messagebox_timer; $.fn.messagebox ...
- JS组件系列——Bootstrap寒冬暖身篇:弹出框和提示框效果以及代码展示
前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编辑.在增加用户体验方面,弹出框和提示框起着重要的作用,如果你的 ...
- Bootstrap:弹出框和提示框效果以及代码展示
前言:对于Web开发人员,弹出框和提示框的使用肯定不会陌生,比如常见的表格新增和编辑功能,一般常见的主要有两种处理方式:行内编辑和弹出框编辑.在增加用户体验方面,弹出框和提示框起着重要的作用,如果你的 ...
- Bootstrap实现弹出框和提示框效果代码
一.Bootstrap弹出框使用过JQuery UI应该知道,它里面有一个dialog的弹出框组件,功能也很丰富.与jQuery UI的dialog类似,Bootstrap里面也内置了弹出框组件.打开 ...
随机推荐
- hadoop搭建杂记:Linux下虚拟机集群网络搭建
VirtualBox搭建hadoop伪分布式模式 VirtualBox搭建hadoop伪分布式模式 master: ip:192.168.56.120 机器名: master 启动NameNode 启 ...
- R与数据分析旧笔记(十一)数据挖掘初步
PART 1 PART 1 传统回归模型的困难 1.为什么一定是线性的?或某种非线性模型? 2.过分依赖于分析者的经验 3.对于非连续的离散数据难以处理 网格方法 <Science>上的文 ...
- 框架开发(三)---smarty整合
一 smarty 是什么 Smarty是一个PHP的模板引擎.更明确来说,它可以帮助开发者更好地 分离程序逻辑和页面显示.最好的例子,是当程序员和模板设计师是不同的两个角色的情况,而且 大部分时候都不 ...
- JS计算两个日期相差几天
function Computation(sDate1, sDate2){ var aDate, oDate1, oDate2, iDays aDate = sDate1.split("-& ...
- hdu 4031 Attack 线段树
题目链接 Attack Time Limit: 5000/3000 MS (Java/Others) Memory Limit: 65768/65768 K (Java/Others)Total ...
- 【转】CentOS 使用yum命令安装出现错误提示”could not retrieve mirrorlist http://mirrorlist.centos.org ***”
源自:http://www.cnblogs.com/yangbingqi/p/3328610.html 刚安装完CentOS,使用yum命令安装一些常用的软件,使用如下命令:yum grouplist ...
- linux 定时执行任务
测试可以了,做个笔记 系统是centos 6.3 1,直接命令 crontab -e 编辑文件,里面写时间和你想要执行的命令. 例子 */1 * * * * sh /home/guanliyang/t ...
- RedHat升级内核成功
升级前 uname -aLinux localhost.localdomain 2.6.18-194.el5 #1 SMP Tue Mar 16 21:52:39 EDT 2010 x86_64 x8 ...
- 一步一步学习SignalR进行实时通信_2_Persistent Connections
原文:一步一步学习SignalR进行实时通信_2_Persistent Connections 一步一步学习SignalR进行实时通信\_2_Persistent Connections Signal ...
- 利用svg技术实现在线动画演示
搜索MDCC的论文,发现了这个站点,里面有演示动画,居然是通过svg来实现的. 分享给大家看看: 有空研究下,做一个类似的演示,展示一下OceanBase内部的常见操作. 展示一个svg做的游戏: h ...