全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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状态栏  # 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小时内与您取得联系。