这篇文章主要给大家介绍了iOS在状态栏上显示提醒信息的相关资料,实现后的效果非常不错,文中给出了详细的示例代码供大家参考学习,需要的朋友们下面来一起看看吧。
先看效果图
实现这个效果,用到了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:@"修改失败"];
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对编程学习网的支持。
沃梦达教程
本文标题为:iOS在状态栏上显示提醒信息的功能定制


基础教程推荐
猜你喜欢
- Android开发Compose集成高德地图实例 2023-06-15
- Android实现短信验证码输入框 2023-04-29
- iOS开发 全机型适配解决方法 2023-01-14
- iOS Crash常规跟踪方法及Bugly集成运用详细介绍 2023-01-18
- iOS开发使用XML解析网络数据 2022-11-12
- Flutter进阶之实现动画效果(三) 2022-10-28
- Android Compose自定义TextField实现自定义的输入框 2023-05-13
- MVVMLight项目Model View结构及全局视图模型注入器 2023-05-07
- iOS中如何判断当前网络环境是2G/3G/4G/5G/WiFi 2023-06-18
- IOS获取系统相册中照片的示例代码 2023-01-03