TSMessages,非HUD风格的iOS提示框(附官方demo BUG修复方案)

优势

  • 先看效果
  • 个人觉得这种提示效果用在UITableView上要比HUD优雅美观,而其他情况下的提示,用HUD比较好
  • 源码简介易懂,用起来也很方便

导入

pod导入相对很简单,主要讲怎么手动导入这个库

  • 下载(https://github.com/KrauseFx/TSMessages),这个文件管理的不好,用到的东西比较分散,首先,将TSMessages-master/Pod/Classes下所有文件拖到工程里,然后将TSMessages-master/Example/Pods/HexColors/Classes中的两个文件导入
  • 引用头文件#import "TSMessageView.h"

使用

  • TSMessageNotificationType:提示样式,包含 TSMessageNotificationTypeMessage,TSMessageNotificationTypeWarning,TSMessageNotificationTypeError,TSMessageNotificationTypeSuccess,分别用来做展示信息,提示警告,提示错误,提示成功
  • TSMessageNotificationPosition:提示位置,包含 TSMessageNotificationPositionTop,TSMessageNotificationPositionNavBarOverlay,TSMessageNotificationPositionBottom,分别展示在顶部(有NavigationBar的话紧挨着它),遮挡NavigationBar(实际测试并不好用),底部
  • TSMessageNotificationDuration:提示消失方式,包含 TSMessageNotificationDurationAutomatic,TSMessageNotificationDurationEndless,含义是自动消失和手动消失

最基本用法

[TSMessage showNotificationWithTitle:@"标题"
                            subtitle:@"详细信息"
                                type:TSMessageNotificationTypeError];

按钮点击事件,自定义图片

[TSMessage showNotificationInViewController:self
                                      title:@"标题"
                                   subtitle:@"详细信息"
                                      image:nil
                                       type:TSMessageNotificationTypeMessage
                                   duration:TSMessageNotificationDurationAutomatic
                                   callback:nil
                                buttonTitle:@"按钮标题"
                             buttonCallback:^{
                                 NSLog(@"按钮事件");
                             }
                                 atPosition:TSMessageNotificationPositionTop
                       canBeDismissedByUser:YES]; 

自定义展示样式

[[TSMessageView appearance] setTitleFont:[UIFont boldSystemFontOfSize:6]];//标题字体大小
[[TSMessageView appearance] setTitleTextColor:[UIColor redColor]];//标题字体颜色
[[TSMessageView appearance] setContentFont:[UIFont boldSystemFontOfSize:10]];//内容字体大小
[[TSMessageView appearance]setContentTextColor:[UIColor greenColor]];//内容字体颜色
[[TSMessageView appearance]setErrorIcon:[UIImage imageNamed:@"NotificationButtonBackground"]];//自定义失败图片
[[TSMessageView appearance]setSuccessIcon:[UIImage imageNamed:@"NotificationButtonBackground"]];//自定义成功图片
[[TSMessageView appearance]setMessageIcon:[UIImage imageNamed:@"NotificationButtonBackground"]];//自定义信息展示图片
[[TSMessageView appearance]setWarningIcon:[UIImage imageNamed:@"NotificationButtonBackground"]];//自定义警告图片

官方demo修改成遮挡NavigationBar样式效果也不好,提示信息被NAvigationBar遮挡,但demo上有一个很好的处理思路,先把NavigationBar隐藏,待提示消失后再展示出来

修改方法

首先你的样式应该是 TSMessageNotificationPositionNavBarOverlay,如:

if (self.navigationController.navigationBarHidden == NO) {
    self.navigationController.navigationBarHidden = YES;
}//必须要加
    
[TSMessage showNotificationInViewController:self
                                      title:@"标题"
                                   subtitle:@"详细信息"
                                      image:nil
                                       type:TSMessageNotificationTypeMessage
                                   duration:TSMessageNotificationDurationAutomatic
                                   callback:nil
                                buttonTitle:@"按钮标题"
                             buttonCallback:^{
                                 NSLog(@"按钮事件");
                             }
                                 atPosition:TSMessageNotificationPositionNavBarOverlay
                       canBeDismissedByUser:YES];

然后在

    - (void)fadeOutNotification:(TSMessageView *)currentView animationFinishedBlock:(void (^)())animationFinished

方法下加入

if (currentView.messagePosition == TSMessageNotificationPositionNavBarOverlay) {
    UIViewController *vc = currentView.viewController;
    vc.navigationController.navigationBarHidden = NO;
}                              

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏编程之旅

自定义UISearchController的外观

以前我们在项目中使用搜索框的时候,如果用系统自带的控件则是使用UISearchDisplayController,而自从iOS8之后,系统重新给我们提供了一个搜...

1442
来自专栏HT

基于HTML5 Canvas实现用户交互

  很多人都有这样的疑问,基于HTML5 Canvas实现的元素怎么和用户进行交互?在这里我们用到HT for Web(http://www.hightopo....

2248
来自专栏24K纯开源

用Qt写软件系列五:一个安全防护软件的制作(3)

引言        上一篇中讲述了工具箱的添加。通过一个水平布局管理器,我们将一系列的工具按钮组合到了一起,完成了工具箱的编写。本文在前面的基础上实现窗体分割效...

1939
来自专栏游戏杂谈

chrome、ff下flash的mousewheel事件失效(wmode=transparent)

1094
来自专栏iOS技术

iOS 横向滚动菜单框架 YBLevelList

先上效果图: ? YBLevelListGif.gif 优势 该框架的解决的核心问题就是顶部滚动菜单的高度自定义。 顶部的标题view,支持富文本,支持图片,...

3358
来自专栏DannyHoo的专栏

ios开发中解决UILabel上文字不能右对齐的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/...

1121
来自专栏一“技”之长

iOS系统菜单控制器UIMenuController使用简介

   在许多iOS应用中,当用户进行某文字或图片区域的长按操作时,都会弹出一个系统菜单控件,用户可以通过操作菜单控件上的按钮进行数据的复制、剪切、粘贴等操作。系...

1173
来自专栏ios 技术积累

TableViewCell和百度地图手势冲突

如果要实现这个功能,出现的问题就是缩放地图不灵敏,上下拖动TableView就会跟着动 解决办法

1682
来自专栏岑志军的专栏

对UILabel添加UIMenuController扩展

18610
来自专栏菩提树下的杨过

Asp.Net4.0/VS2010新变化(6):内置的图表控件

.net4.0以前,要想在网页上画个饼图,那还真不是个轻松的活儿,得有点技术含量,比如:可以用System.Drawing下的那些东东,再或者用Silverli...

1889

扫码关注云+社区