您的位置:首页 > 产品设计 > UI/UE

通过UIWindow创建状态栏的通知

2016-05-05 21:21 453 查看
//
//  HQStatusBarHUD.m
//  StatusBarHUD
//
//  Created by hq on 16/5/3.
//  Copyright © 2016年 hanqing. All rights reserved.
//

#import "HQStatusBarHUD.h"

#define  HQScreenWidth [UIScreen mainScreen].bounds.size.width

//提示框的高度
#define HQTipsHeight 40

//字体大小
#define HQFontSize [UIFont systemFontOfSize:14]

@interface HQStatusBarHUD()

@end

@implementation HQStatusBarHUD

static UIWindow *window;

static NSTimer *timer;

+(void) setUpWindow{

window=[[UIWindow alloc] init];

window.windowLevel=UIWindowLevelStatusBar;

window.frame=CGRectMake(0, -HQTipsHeight, HQScreenWidth,HQTipsHeight);

window.hidden=NO;

[UIView animateWithDuration:0.5 animations:^{

window.frame=CGRectMake(0,0, HQScreenWidth,HQTipsHeight);

}];
}

+(void) showMessage:(NSString *) message image:(UIImage *) image messageBgColor:(UIColor *)bgColor {

[timer invalidate];

[self setUpWindow];

window.backgroundColor=bgColor;

UIButton *but=[[UIButton alloc]initWithFrame:window.bounds];

but.titleEdgeInsets=UIEdgeInsetsMake(0, 10, 0, 0);

[but setTitle:message forState:UIControlStateNormal];

[but setImage:image forState:UIControlStateNormal];

but.titleLabel.textColor=[UIColor whiteColor];

but.titleLabel.font=HQFontSize;

[window addSubview:but];

//添加自动消失动画
timer=[NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(hide) userInfo:nil repeats:NO];

}

//显示成功信息
+(void) showSuccessWithString:(NSString *) message{

[self showMessage:message image:[UIImage imageNamed:@"StatusBarHUD.bundle/success_ico"] messageBgColor:[UIColor colorWithRed:0.600 green:0.800 blue:0.400 alpha:1.000]];
}

+(void) showErrorWithString:(NSString *) message{

[self showMessage:message image:[UIImage imageNamed:@"StatusBarHUD.bundle/error_icon"] messageBgColor:[UIColor colorWithRed:1.000 green:0.216 blue:0.246 alpha:1.000]];
}

+(void) showMessageWithString:(NSString *) message{

[self showMessage:message image:[UIImage imageNamed:@"StatusBarHUD.bundle/info_icon"] messageBgColor:[UIColor colorWithRed:1.000 green:0.600 blue:0.000 alpha:1.000]];
}

+(void)showLoading:(NSString *)message messageBgColor:(UIColor *)bgColor{

[self setUpWindow];

window.backgroundColor=bgColor;

UIActivityIndicatorView *indicator=[[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];

indicator.frame=CGRectMake(0, (HQTipsHeight-indicator.bounds.size.height)*0.5, indicator.bounds.size.width, indicator.bounds.size.height);

[indicator startAnimating];

CGFloat labW=[message sizeWithAttributes:@{NSFontAttributeName:HQFontSize}].width;

UILabel *lab=[[UILabel alloc]init];

lab.frame=CGRectMake(indicator.bounds.size.width, 0, labW, HQTipsHeight);

lab.text=message;

lab.textAlignment=NSTextAlignmentCenter;

lab.textColor=[UIColor whiteColor];

lab.font=HQFontSize;

UIView *view=[[UIView alloc] init];

view.bounds=CGRectMake(0, 0, indicator.bounds.size.width+labW, HQTipsHeight);

view.center=window.center;

[view addSubview:indicator];

[view addSubview:lab];

[window addSubview:view];
}

+(void) showLoadingWithString:(NSString *) message{

[self showLoading:message messageBgColor:[UIColor colorWithRed:1.000 green:0.600 blue:0.000 alpha:1.000]];
}

+(void) hide{

[UIView animateWithDuration:0.5 delay:0.5 options:UIViewAnimationOptionCurveLinear animations:^{
window.frame=CGRectMake(0,-HQTipsHeight, HQScreenWidth,HQTipsHeight);
} completion:^(BOOL finished) {
window=nil;
}];
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: