先看效果图
实现这个效果,用到了JDStatusBarNotification,这是一个易于使用和定制的在状态栏上显示提醒信息的控件,可自定义颜色、字体以及动画,支持进度条展示,并可以显示活动指示器。
假设这么一个场景,需要调接口修改个人资料,这时有3个状态,正在修改、修改成功、修改失败。我们可以写一个公共类,方便调用,譬如 NSObject+Common。
.h文件写方法#import
@interface NSObject (Common)
- (void)showStatusBarQueryStr:(NSString *)tipStr;- (void)showStatusBarSuccessStr:(NSString *)tipStr;//此方法在实际开发中调用,调接口失败返回的error- (void)showStatusBarError:(NSError *)error;//...
- (void)showStatusBarErrorStr:(NSString *)tipStr;
@end.m文件实现方法#import "NSObject+Common.h"#import "JDStatusBarNotification.h"
@implementation NSObject (Common)
//error返回的tipStr- (NSString *)tipFromError:(NSError *)error {if (error && error.userInfo) {NSMutableString *tipStr = [[NSMutableString alloc] init];if ([error.userInfo objectForKey:@"msg"]) {NSArray *msgArray = [[error.userInfo objectForKey:@"msg"] allValues];NSUInteger num = [msgArray count];for (int i = 0; i < num; i++) {NSString *msgStr = [msgArray objectAtIndex:i];if (i+1 < num) {[tipStr appendString:[NSString stringWithFormat:@"%@\n", msgStr]];}else{[tipStr appendString:msgStr];}}}else{if ([error.userInfo objectForKey:@"NSLocalizedDescription"]) {tipStr = [error.userInfo objectForKey:@"NSLocalizedDescription"];}else{[tipStr appendFormat:@"ErrorCode%ld", (long)error.code];}}return tipStr;}return nil;}
- (void)showStatusBarQueryStr:(NSString *)tipStr {[JDStatusBarNotification showWithStatus:tipStr styleName:JDStatusBarStyleSuccess];[JDStatusBarNotification showActivityIndicator:YES indicatorStyle:UIActivityIndicatorViewStyleWhite];}
- (void)showStatusBarSuccessStr:(NSString *)tipStr {if ([JDStatusBarNotification isVisible]) {dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{[JDStatusBarNotification showActivityIndicator:NO indicatorStyle:UIActivityIndicatorViewStyleWhite];[JDStatusBarNotification showWithStatus:tipStr dismissAfter:1.5 styleName:JDStatusBarStyleSuccess];});}else{[JDStatusBarNotification showActivityIndicator:NO indicatorStyle:UIActivityIndicatorViewStyleWhite];[JDStatusBarNotification showWithStatus:tipStr dismissAfter:1.0 styleName:JDStatusBarStyleSuccess];}}
- (void)showStatusBarError:(NSError *)error {if ([JDStatusBarNotification isVisible]) {dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{[JDStatusBarNotification showActivityIndicator:NO indicatorStyle:UIActivityIndicatorViewStyleWhite];[JDStatusBarNotification showWithStatus:[self tipFromError:error] dismissAfter:1.5 styleName:JDStatusBarStyleError];});}else{[JDStatusBarNotification showActivityIndicator:NO indicatorStyle:UIActivityIndicatorViewStyleWhite];[JDStatusBarNotification showWithStatus:[self tipFromError:error] dismissAfter:1.5 styleName:JDStatusBarStyleError];}}
- (void)showStatusBarErrorStr:(NSString *)tipStr {if ([JDStatusBarNotification isVisible]) {dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{[JDStatusBarNotification showActivityIndicator:NO indicatorStyle:UIActivityIndicatorViewStyleWhite];[JDStatusBarNotification showWithStatus:tipStr dismissAfter:1.5 styleName:JDStatusBarStyleError];});}else{[JDStatusBarNotification showActivityIndicator:NO indicatorStyle:UIActivityIndicatorViewStyleWhite];[JDStatusBarNotification showWithStatus:tipStr dismissAfter:1.5 styleName:JDStatusBarStyleError];}}调用方法[self showStatusBarQueryStr:@"正在修改个人信息"];[self showStatusBarSuccessStr:@"个人信息修改成功"];//[self showStatusBarError:error];[self showStatusBarErrorStr:@"修改失败"];总结以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
您可能感兴趣的文章:iOS 自定义状态栏和导航栏详细介绍详解在iOS App中自定义和隐藏状态栏的方法iOS实现点击状态栏自动回到顶部效果详解iOS 隐藏导航条和状态栏实现方法图文讲解如何解决App的iOS 7顶部状态栏适配问题iOS 设置状态栏的背景颜色方法深入理解iOS的状态栏IOS点击按钮隐藏状态栏详解及实例代码IOS 开发状态栏隐藏的实现办法iOS状态栏、导航栏的一些笔记分享
