iOS LSProgressHUD
来源:互联网 发布:网络防火墙作用 编辑:程序博客网 时间:2024/05/18 00:02
//// LSProgressHUD.h// SoWeChat//// Created by linpeng on 14-8-12.// Copyright (c) 2014年 linpeng. All rights reserved.//#import <UIKit/UIKit.h>#define LSProgressHUDICON_Default @"LSProgressHUD"#define LSProgressHUDICON_Fail @"LSProgressHUD_Error"#define LSProgressHUDICON_Suc @"LSProgressHUD_Suc"typedef void(^LSProgressHUDBlock)(BOOL finish);typedef enum{ LSProgressHUD_Wait = 0, LSProgressHUD_Succces = 1, LSProgressHUD_Fail = 2, LSProgressHUD_Default = LSProgressHUD_Wait, }LSProgressHUDType;@interface LSProgressHUD : UIView/** * 菊花展示 * * @param superview 父视图 * @param msg 提示文字 * @param doBlock 异步执行的操作 */+(void)showInSuperView:(UIView *)superview message:(NSString *)msg whileExecutingBlock:(LSProgressHUDBlock)doBlock;/** * 操作成功 * * @param superview 父视图 * @param msg 提示文字 */+(void)showSuccessInSuperView:(UIView *)superview message:(NSString *)msg;/** * 操作失败 * * @param superview 父视图 * @param msg 提示文字 */+(void)showFailInSuperView:(UIView *)superview message:(NSString *)msg;@end
=======================================
//// LSProgressHUD.m// SoWeChat//// Created by linpeng on 14-8-12.// Copyright (c) 2014年 linpeng. All rights reserved.//#import "LSProgressHUD.h"#define RGBCOLOR(r,g,b) [UIColor colorWithRed:(r)/255.0f green:(g)/255.0f blue:(b)/255.0f alpha:1]#define HUD_COLOR RGBCOLOR(86,206,186)@interface LSProgressHUD()@property(nonatomic,strong)UILabel *labMsg;@property(nonatomic,strong)UIImageView *icon;@end@implementation LSProgressHUD- (id)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { } return self;}-(id)initWithType:(LSProgressHUDType)type{ if (self=[super init]) { int w = [UIScreen mainScreen].bounds.size.width; int h = [UIScreen mainScreen].bounds.size.height; [self setFrame:CGRectMake(0, 0, w, h)]; [self setBackgroundColor:[UIColor clearColor]]; UIView *bg = [[UIView alloc] initWithFrame:CGRectMake(0.2*w,(h-0.2*h)/2, 0.6*w, 100)]; [bg setBackgroundColor:[HUD_COLOR colorWithAlphaComponent:1]]; bg.layer.cornerRadius = 10; bg.layer.borderWidth = 0.5; bg.layer.borderColor = HUD_COLOR.CGColor; bg.layer.masksToBounds = YES; [self addSubview:bg]; self.icon = [[UIImageView alloc] initWithFrame:CGRectMake((bg.size.width-40)/2, (bg.size.height-60)/2, 40, 40)]; [_icon setImage:[UIImage imageNamed:LSProgressHUDICON_Default]]; [bg addSubview:_icon]; self.labMsg = [[UILabel alloc] initWithFrame:CGRectMake(0, _icon.origin.y+_icon.size.height+10, bg.size.width, 20)]; [_labMsg setBackgroundColor:[UIColor clearColor]]; [_labMsg setFont:[UIFont systemFontOfSize:15]]; [_labMsg setTextAlignment:NSTextAlignmentCenter]; [_labMsg setTextColor:[UIColor whiteColor]]; [bg addSubview:_labMsg]; if (type==LSProgressHUD_Wait) { [bg setBackgroundColor:[UIColor whiteColor]]; [_labMsg setTextColor:HUD_COLOR]; [bg setBackgroundColor:[HUD_COLOR colorWithAlphaComponent:0.1]]; //旋转 CABasicAnimation* rotationAnimation; rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 ]; rotationAnimation.duration = 1; rotationAnimation.cumulative = YES; rotationAnimation.repeatCount = HUGE_VAL; [_icon.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"]; } } return self;}+(void)showInSuperView:(UIView *)superview message:(NSString *)msg whileExecutingBlock:(LSProgressHUDBlock)doBlock{ LSProgressHUD *HUD = [[LSProgressHUD alloc] initWithType:LSProgressHUD_Default]; HUD.labMsg.text = msg; [superview addSubview:HUD]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void){ doBlock(YES); dispatch_async(dispatch_get_main_queue(), ^{ [UIView animateWithDuration:0.5 animations:^{ HUD.alpha = 0; }completion:^(BOOL finished) { [HUD removeFromSuperview]; }]; }); });}+(void)showSuccessInSuperView:(UIView *)superview message:(NSString *)msg{ LSProgressHUD *HUD = [[LSProgressHUD alloc] initWithType:LSProgressHUD_Succces]; HUD.labMsg.text = msg; [HUD.icon setImage:[UIImage imageNamed:LSProgressHUDICON_Suc]]; HUD.alpha = 0; [UIView animateWithDuration:1 animations:^{ HUD.alpha = 1; }completion:^(BOOL finished) { [superview addSubview:HUD]; }]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [UIView animateWithDuration:0.5 animations:^{ HUD.alpha = 0; }completion:^(BOOL finished) { [HUD removeFromSuperview]; }]; });}+(void)showFailInSuperView:(UIView *)superview message:(NSString *)msg{ LSProgressHUD *HUD = [[LSProgressHUD alloc] initWithType:LSProgressHUD_Succces]; HUD.labMsg.text = msg; [HUD.icon setImage:[UIImage imageNamed:LSProgressHUDICON_Fail]]; HUD.alpha = 0; [UIView animateWithDuration:1 animations:^{ HUD.alpha = 1; }completion:^(BOOL finished) { [superview addSubview:HUD]; }]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ [UIView animateWithDuration:0.5 animations:^{ HUD.alpha = 0; }completion:^(BOOL finished) { [HUD removeFromSuperview]; }]; });}@end
调用:
[LSProgressHUDshowInSuperView:self.viewmessage:@"请稍等"whileExecutingBlock:^(BOOL finish) {
sleep(5);
}];
要点:
LSProgressHUD *HUD = [[LSProgressHUDalloc]initWithType:LSProgressHUD_Default];
HUD.labMsg.text = msg;
[superviewaddSubview:HUD];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0), ^(void){
doBlock(YES);
dispatch_async(dispatch_get_main_queue(), ^{
[UIViewanimateWithDuration:0.5animations:^{
HUD.alpha =0;
}completion:^(BOOL finished) {
[HUDremoveFromSuperview];
}];
});
});
0 0
- iOS LSProgressHUD
- iOS
- iOS
- IOS
- iOS
- iOS
- IOS
- ios
- iOS
- iOS
- IOS
- iOS
- ios
- ios ~~~~~
- ios
- IOS
- IOS
- IOS
- serialVersionUID的作用
- virtualbox虚拟机安装共享文档
- ehcache是一开源缓存工具
- Android平台中应该如何获取音乐文件的信息
- linux 配置 MP3 RMVB 解码器
- iOS LSProgressHUD
- acm 小猴子的下落的理解
- C语言平面几何4-两线段是否相交
- Ubuntu 14.04安装WPS启动时遇到libgthread-2.0.so.0错误解决办法
- MySQL索引详解
- 最小生成树(prim算法模板,选点,oj2144)
- 使用ActivityGroup (ViewPager)时,Result 无响应
- Android消息处理机制(二)
- 我对Lamport Logical Clock的理解