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

 更新时间:2017年06月09日 09:38:18   作者:踏歌寻方  
这篇文章主要给大家介绍了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:@"修改失败"];

总结

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

相关文章

  • XCODE Debug模式资料整理

    XCODE Debug模式资料整理

    这篇文章主要介绍了XCODE Debug模式资料整理的相关资料,开发APP应用肯定会用到Debug来调试程序,这里就细致的讲解下debug资料,需要的朋友可以参考下
    2016-11-11
  • iOS开发创建frame实现window窗口view视图示例

    iOS开发创建frame实现window窗口view视图示例

    这篇文章主要为大家介绍了iOS开发创建frame实现window窗口view视图示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • iOS开发中ViewController的页面跳转和弹出模态

    iOS开发中ViewController的页面跳转和弹出模态

    这篇文章主要介绍了iOS开发中ViewController的页面跳转和弹出模态,ViewController是MVC开发模式中一个重要的类,需要的朋友可以参考下
    2015-10-10
  • ios 贝塞尔曲线切割圆角的方法

    ios 贝塞尔曲线切割圆角的方法

    本篇文章主要介绍了ios 贝塞尔曲线切割圆角的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • IOS获取系统相册中照片的示例代码

    IOS获取系统相册中照片的示例代码

    在大家的日常开发中,经常会遇到有的app需要从系统相册中获取图片,如设置用户头像等,下面这篇文章给大家分享这个功能的实现,有需要的可以参考借鉴。
    2016-09-09
  • IOS 开发之实现取消tableView返回时cell选中的问题

    IOS 开发之实现取消tableView返回时cell选中的问题

    这篇文章主要介绍了IOS 开发之实现取消tableView返回时cell选中的问题的相关资料,希望通过本文能实现大家想要的功能,需要的朋友可以参考下
    2017-09-09
  • 详解IOS WebRTC的实现原理

    详解IOS WebRTC的实现原理

    WebRTC,源自网页实时通信(Web Real-Time Communication)缩写,它是支持网页浏览器进行实时语音对话或视频对话的技术。它为我们提供了视频会议的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:windows,linux,mac,android,ios。
    2021-06-06
  • 判断iPhone的WiFi是否打开的两种方法

    判断iPhone的WiFi是否打开的两种方法

    大家都知道判断WiFi是否连接可以使用Reachability进行判断,那么wifi是否打开应该怎么判断呢?下面小编给大家分享两种完全基于不同思路的方法,需要的朋友参考下
    2016-11-11
  • iOS10添加本地推送(Local Notification)实例

    iOS10添加本地推送(Local Notification)实例

    这篇文章主要为大家详细介绍了iOS10添加本地推送(Local Notification)实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • iOS图片拉伸技巧(iOS5.0、iOS6.0)

    iOS图片拉伸技巧(iOS5.0、iOS6.0)

    这篇文章主要为大家详细介绍了iOS图片拉伸技巧,提供了3种图片拉伸的解决方案,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-01-01

最新评论