先看效果图

实现这个效果,用到了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状态栏
# ios
# 显示状态栏
# 显示提示信息
# iOS 自定义状态栏和导航栏详细介绍
# 详解在iOS App中自定义和隐藏状态栏的方法
# iOS实现点击状态栏自动回到顶部效果详解
# iOS 隐藏导航条和状态栏实现方法
# 图文讲解如何解决App的iOS 7顶部状态栏适配问题
# iOS 设置状态栏的背景颜色方法
# 深入理解iOS的状态栏
# IOS点击按钮隐藏状态栏详解及实例代码
# IOS 开发状态栏隐藏的实现办法
# iOS状态栏、导航栏的一些笔记分享
# 个人信息
# 我们可以
# 这是一个
# 自定义
# 这篇文章
# 谢谢大家
# 先看
# 进度条
# 栏上
# 在实际
# 有疑问
# NSString
# tipStr
# showStatusBarQueryStr
# Foundation
# gt
# interface
# void
# userInfo
# error
相关文章:
如何选择高效响应式自助建站源码系统?
焦点电影公司作品,电影焦点结局是什么?
重庆市网站制作公司,重庆招聘网站哪个好?
大连网站设计制作招聘信息,大连投诉网站有哪些?
建站之星上传入口如何快速找到?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
网站制作免费,什么网站能看正片电影?
常州企业建站如何选择最佳模板?
常州自助建站工具推荐:低成本搭建与模板选择技巧
建站之星2.7模板快速切换与批量管理功能操作指南
建站主机如何安装配置?新手必看操作指南
网站app免费制作软件,能免费看各大网站视频的手机app?
企业微网站怎么做,公司网站和公众号有什么区别?
如何在Golang中指定模块版本_使用go.mod控制版本号
如何快速查询网站的真实建站时间?
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
婚礼视频制作网站,学习*后期制作的网站有哪些?
深圳网站制作的公司有哪些,dido官方网站?
微网站制作教程,不会写代码,不会编程,怎么样建自己的网站?
如何快速搭建高效服务器建站系统?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
建站主机SSH密钥生成步骤及常见问题解答?
广德云建站网站建设方案与建站流程优化指南
网站制作网站,深圳做网站哪家比较好?
车管所网站制作流程,交警当场开简易程序处罚决定书,在交警网站查询不到怎么办?
南京网站制作费用,南京远驱官方网站?
如何用美橙互联一键搭建多站合一网站?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
建站之星ASP如何实现CMS高效搭建与安全管理?
建站主机服务器选型指南与性能优化方案解析
小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化
如何在七牛云存储上搭建网站并设置自定义域名?
建站之家VIP精选网站模板与SEO优化教程整合指南
家庭服务器如何搭建个人网站?
JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)
建站之星微信建站一键生成小程序+多端营销系统
如何通过多用户协作模板快速搭建高效企业网站?
如何快速配置高效服务器建站软件?
建站主机CVM配置优化、SEO策略与性能提升指南
如何在万网开始建站?分步指南解析
如何在IIS中配置站点IP、端口及主机头?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
如何快速搭建高效香港服务器网站?
如何在自有机房高效搭建专业网站?
盐城做公司网站,江苏电子版退休证办理流程?
美食网站链接制作教程视频,哪个教做美食的网站比较专业点?
如何选择高效便捷的WAP商城建站系统?
道歉网站制作流程,世纪佳缘致歉小吴事件,相亲网站身份信息伪造该如何稽查?
昆明高端网站制作公司,昆明公租房申请网上登录入口?
如何自定义建站之星网站的导航菜单样式?
*请认真填写需求信息,我们会在24小时内与您取得联系。