首页 > 系统 > iOS > 正文

iOS在状态栏上显示提醒信息的功能定制

2020-07-26 02:47:48
字体:
来源:转载
供稿:网友

先看效果图


实现这个效果,用到了JDStatusBarNotification,这是一个易于使用和定制的在状态栏上显示提醒信息的控件,可自定义颜色、字体以及动画,支持进度条展示,并可以显示活动指示器。

假设这么一个场景,需要调接口修改个人资料,这时有3个状态,正在修改、修改成功、修改失败。我们可以写一个公共类,方便调用,譬如 NSObject+Common。

.h文件写方法

#import <Foundation/Foundation.h>@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:@"修改失败"];

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对武林网的支持。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表