MessageBanner 1.0.4

MessageBanner 1.0.4

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布最新发布2015年7月

Thibault Carpentier 维护。



 
依赖
HexColors~> 2.3.0
FXBlurView~> 1.6.1
 


  • Thibault Carpentier

Message Banner

这个库提供了一个 易于使用且完全可定制的类,用于在屏幕顶部/底部/中间显示通知视图

消息横幅分为4种不同类型:错误警告消息成功

每种不同类型的横幅都可以有不同的外观和完全可定制的功能。(有关配置部分)

每个横幅都可以显示一个 标题、一个 副标题、一个 图片和一个 按钮

Demo

屏幕截图

Error Warning Message Success

安装

手动安装

依赖项

项目使用HexColorsFXBlurView。您还需要手动安装它们。请参阅它们GitHub页面上的安装要求。

MBLMessageBanner手动安装

下载Message banner项目。您可以直接从他的GitHub页面下载
或者通过命令行

$ git clone https://github.com/Loadex/Message-Banner.git

将MESSAGE BANNER文件夹拖放到您的项目中。

快速入门指南

将导出到将使用它的类的顶部。

#import <MBLMessageBanner.h>

要显示基本通知,可以使用以下之一调用

[MBLMessageBanner showMessageBannerInViewController:aViewController
                                           title:@"aTitle"
                                        subtitle:@"aSubtitle"];

// ------------------------- OR -------------------------

    [MBLMessageBanner showMessageBannerInViewController:self
                                               title:@"aTitle"
                                            subtitle:@"aSubtitle"
                                               image:[UIImage imageNamed:@"icon.png"]
                                                type:MBLMessageBannerTypeMessage
                                            duration:MBLMessageBannerDurationDefault
                              userDissmissedCallback:^(MBLMessageBannerView *bannerView) {
                                  return;
                              }
                                         buttonTitle:@"BtnTitile"
                           userPressedButtonCallback:^(MBLMessageBannerView *banner) {
                                  return;
                              }
                                          atPosition:MBLMessageBannerPositionTop
                                canBeDismissedByUser:YES delegate:self];

类文档

MBLMessageBanner类文档

MBLMessageBanner类提供以下方法”

+ (void)setDefaultViewController:(UIViewController *)aViewController;

允许您设置一个默认视图控制器,横幅将附加到其中。
默认值:[UIApplication sharedApplication].keyWindow.rootViewController

+ (void)setMessageBannerDelegate:(id<MBLMessageBannerDelegate>)aDelegate;

允许设置MBLMessageBanner类的代理
请参阅代理文档

+ (void)showMessageBannerInViewController:(UIViewController *)viewController
                                    title:(NSString *)title
                                 subtitle:(NSString *)subtitle;

+ (void)showMessageBannerInViewController:(UIViewController *)viewController
                                    title:(NSString *)title
                                 subtitle:(NSString *)subtitle
                               atPosition:(MBLMessageBannerPosition)messagePosition;

+ (void)showMessageBannerInViewController:(UIViewController *)viewController
                                    title:(NSString *)title
                                 subtitle:(NSString *)subtitle
                                     type:(MBLMessageBannerType)type
                               atPosition:(MBLMessageBannerPosition)messagePosition;

+ (void)showMessageBannerInViewController:(UIViewController *)viewController
                                    title:(NSString *)title
                                 subtitle:(NSString *)subtitle
                                     type:(MBLMessageBannerType)type
                                 duration:(NSTimeInterval)duration
                               atPosition:(MBLMessageBannerPosition)messagePosition;

+ (void)showMessageBannerInViewController:(UIViewController *)viewController
                                    title:(NSString *)title
                                 subtitle:(NSString *)subtitle
                                     type:(MBLMessageBannerType)type
                                 duration:(NSTimeInterval)duration
                   userDissmissedCallback:(void (^)(MBLMessageBannerView* bannerView))userDissmissedCallback
                               atPosition:(MBLMessageBannerPosition)messagePosition
                     canBeDismissedByUser:(BOOL)dismissingEnabled;

+ (void)showMessageBannerInViewController:(UIViewController *)viewController
                                    title:(NSString *)title
                                 subtitle:(NSString *)subtitle
                                    image:(UIImage *)image
                                     type:(MBLMessageBannerType)type
                                 duration:(NSTimeInterval)duration
                   userDissmissedCallback:(void (^)(MBLMessageBannerView* bannerView))userDissmissedCallback
                               atPosition:(MBLMessageBannerPosition)messagePosition
                     canBeDismissedByUser:(BOOL)dismissingEnabled;

+ (void)showMessageBannerInViewController:(UIViewController *)viewController
                                   title:(NSString *)title
                                subtitle:(NSString *)subtitle
                                   image:(UIImage *)image
                                    type:(MBLMessageBannerType)type
                                duration:(NSTimeInterval)duration
                                userDissmissedCallback:(void (^)(MBLMessageBannerView* bannerView))userDissmissedCallback
                             buttonTitle:(NSString *)buttonTitle
                          userPressedButtonCallback:(void (^)(MBLMessageBannerView* banner))userPressedButtonCallback
                              atPosition:(MBLMessageBannerPosition)messagePosition
                    canBeDismissedByUser:(BOOL)dismissingEnabled
                                 delegate:(id <MBLMessageBannerDelegate>)aDelegate;


+ (void)showMessageBanner:(MBLMessageBannerView *)messageBannerView;

添加一个新MBLMessageBannerView进行显示。每个MBLMessageBannerView都会在屏幕上单独显示。如果多次调用,MBLMessageBanner将在先前的消息横幅视图消失时显示它。
参数说明

  • viewController:在其中显示消息横幅的视图控制器。也可以是UINavigationController。如果为nil,则使用默认视图控制器。
  • 标题: 信息横幅视图中的标题。
  • 副标题: 信息横幅视图中的副标题。
  • 图片: 信息横幅视图左侧显示的图片。
  • 类型: 信息横幅视图的类型(请参见类型部分以获取可用的值)。信息类型允许多加载设计配置文件中的正确设计。(请参见配置文件部分)
  • 持续时间: 信息横幅显示的持续时间(秒)。(请参见持续时间部分以获取自定义值)
  • userDissmissedCallback: 当用户关闭信息横幅时应执行的操作块。(参见关闭手势部分以查看可能的手势)
  • buttonTitle: 按钮的标题。如果设置,将允许创建按钮,否则信息横幅将不会显示按钮。
  • userPressedButtonCallback: 当用户按下按钮时(如果不是 nil)应执行的操作块。
  • messagePosition: 信息在viewController上的位置。(参见位置部分以查看可能的位置)
  • dismissingEnabled: 启用或禁用消息横幅视图上的用户关闭方法。
  • aDelegate: 设置信息横幅的代理(请参见代理文档以查看可用的代理方法)
  • messageBannerView: 一个要显示或立即显示的消息横幅的现有 MessageBannerView 实例(如果没有显示任何内容)。
+ (BOOL) hideMessageBanner;
+ (BOOL) hideMessageBannerWithCompletion:(void (^)())completion;

隐藏当前显示的信息横幅
参数说明

  • completion: 消息横幅隐藏时应执行的操作块。
    返回值
  • BOOL: 如果信息横幅已被关闭,则返回 YES,否则返回 NO。

MBLMessageBannerView 类文档

The MBLMessageBannerView 类提供以下方法

+ (BOOL)addMessageBannerDesignFromFileNamed:(NSString *)file;

加载自定义信息横幅设计文件。
参数说明

  • file:JSON配置文件的名称。(请参见设计配置文件部分以获取语法)
    返回值:如果文件正确加载,则返回 YES,否则返回 NO。

代理方法

消息横幅类实现了以下代理协议的以下可选方法

- (void)messageBannerViewWillAppear:(MBLMessageBannerView *)messageBanner;
- (void)messageBannerViewDidAppear:(MBLMessageBannerView *)messageBanner;
- (void)messageBannerViewWillDisappear:(MBLMessageBannerView *)messageBanner;
- (void)messageBannerViewDidDisappear:(MBLMessageBannerView *)messageBanner;

参数说明

  • messageBanner:即将显示/隐藏的消息横幅。

NSNotifications

MBLMessageBanner 类还在消息横幅即将或已经出现/消失时发送信号。每个通知都直接由 MBLMessageBannerView 发送。发送的信号是

描述 通知名称 通知定义
在视图即将出现时发送。 messageBannerViewWillAppearNotification MESSAGE_BANNER_VIEW_WILL_APPEAR_NOTIFICATION
在视图即将出现时发送。 messageBannerViewDidAppearNotification MESSAGE_BANNER_VIEW_DID_APPEAR_NOTIFICATION
在视图即将消失时发送。 messageBannerViewWillDisappearNotification MESSAGE_BANNER_VIEW_WILL_DISAPPEAR_NOTIFICATION
在视图即将消失时发送。 messageBannerViewDidDisappearNotification MESSAGE_BANNER_VIEW_DID_DISAPPEAR_NOTIFICATION

消息位置

每个消息横幅视图都有一个位置。默认情况下,或者如果未设置,消息横幅视图将具有 MBLMessageBannerPositionTop 定义的控件位置。可用的位置是

  • MBLMessageBannerPositionTop:信息横幅将在视图控制器顶部显示,紧挨着状态栏或导航控制器,如果该视图有一个导航控制器的话。
  • MBLMessageBannerPositionCenter:信息横幅将在视图控制器中间显示。
  • MBLMessageBannerPositionBottom:消息横幅将在视图控制器底部显示,或者当视图包含工具栏时,显示在工具栏上方。
    Top Positionning Center Positioning Bottom Positioning

消息类型

每个消息横幅都由其类型定义。配置文件中的设计将根据其实际类型加载。以下是可用的类型及其预设置的设计:

  • MBLMessageBannerTypeError:错误消息横幅。
  • MBLMessageBannerTypeWarning:警告消息横幅。
  • MBLMessageBannerTypeMessage:标准消息横幅。
  • MBLMessageBannerTypeSuccess:成功消息横幅。
    Message Error Message Warning Message Message Success

消息持续时间

每个消息横幅都有一个“停留在屏幕上”的时间。此持续时间可以通过方法参数手动设置。然而,类也提供了自定义的持续时间。

  • MBLMessageBannerDurationDefault:持续时间将根据消息横幅视图的大小自动计算。
  • MBLMessageBannerDurationEndless:消息横幅将一直显示,直到用户将其关闭或以编程方式关闭。

关闭方法

消息横幅可以通过多种用户手势进行关闭。用户可以通过在视图上轻触一次或使用滑动手势来关闭它。滑动Gesture根据横幅的位置而不同。

  • MBLMessageBannerPositionTop:用户可以向上滑动屏幕顶部以关闭横幅。
  • MBLMessageBannerPositionCenter:用户可以向左和向右滑动以关闭横幅。
  • MBLMessageBannerPositionBottom:用户可以向下滑动屏幕底部以关闭横幅。

设计配置文件

配置文件是一个JSON格式化的文件。

JSON文件以这种方式格式化

{
    "MessageBannerTypeName": {
        "PropertyName"    : "Property value"
        ,"AnotherProperty" : 1.0
    },

    "AnOtherMessageBannerTypeName": {
        "PropertyName"    : "Property value"
        ,"AnotherProperty" : 1.0
    }
}

本库包含4种不同类型的横幅,JSON设计文件格式的对应名称如下:

名称 类型
错误 MBLMessageBannerTypeError
警告 MBLMessageBannerTypeWarning
消息 MBLMessageBannerTypeMessage
成功 MBLMessageBannerTypeSuccess

每种类型的横幅都可以具有以下属性

通用属性

属性名称 效果 可能的值 默认值 备注
defaultImageForType 定义默认左边图像 "The_image_name.png" 图像参数会覆盖此设置
blurRadius 使用给定的半径模糊附加视图 0.0+ 0.0(禁用) iOS7风格默认模糊半径为40.0
backgroundColor 设置横幅背景颜色 "#FFFFFF" "#FFFFFF"(白色) BackgroundImageName会覆盖此参数
backgroundImageName 设置横幅背景图片 "The_image_name.png" 覆盖BackgroundColor属性
backgroundAlpha 设置横幅背景颜色的透明度 0.0 -> 1.0 1.0

标题属性

属性名称 效果 可能的值 默认值 备注
titleTextColor 设置横幅标题文字颜色 "#FFFFFF" "#000000"(黑色)
titleTextSize 设置横幅标题文字大小 0.0+ 14.0
titleTextShadowColor 设置横幅标题文字阴影颜色 "#FFFFFF" "#FFFFFF"(白色)
titleTextShadowAlpha 设置横幅标题文字阴影透明度 0.0 -> 1.0 1.0
titleTextShadowOffsetX 设置横幅标题文字x阴影偏移 -0.0+ 0.0
titleTextShadowOffsetY 设置横幅标题文字y阴影偏移 -0.0+ 1.0

副标题属性

属性名称 效果 可能的值 默认值 备注
subtitleTextColor 设置横幅副标题文本颜色 "#FFFFFF" "#000000"(黑色)
subtitleTextSize 设置横幅副标题文本大小 0.0+ 14.0
subtitleTextShadowColor 设置横幅副标题文本阴影颜色 "#FFFFFF" "#FFFFFF"(白色)
subtitleTextShadowAlpha 设置横幅副标题文本阴影透明度 0.0 -> 1.0 1.0
subtitleTextShadowOffsetX 设置横幅副标题文本x阴影偏移 -0.0+ 0.0
subtitleTextShadowOffsetY 设置横幅副标题文本y阴影偏移 -0.0+ 1.0

按钮属性

属性名称 效果 可能的值 默认值 备注
buttonBackgroundColor 设置按钮背景颜色 "#FFFFFF" "#FFFFFF"(白色) buttonBackgroundImage和buttonBackgroundPatternImage将覆盖此参数
buttonBackgroundImage 设置按钮背景图片 "The_image_name.png" 覆盖buttonBackgroundColor
buttonBackgroundPatternImage 设置带有图案图片的按钮背景图片 "The_image_name.png" 覆盖buttonBackgroundImage
buttonBackgroundAlpha 设置按钮背景透明度 0.0 -> 1.0 1.0
buttonCornerRadius 设置按钮圆角半径 0.0+ 0.0
buttonBorderColor 设置按钮边框颜色 "#FFFFFF" "#000000"(黑色) 仅在buttonBorderSize >= 1时可见
buttonBorderAlpha 设置按钮边框透明度 0.0 -> 1.0 1.0
buttonBorderSize 设置按钮边框大小 0.0+ 0.0 (无)
buttonTextColor 设置横幅按钮文本颜色 "#FFFFFF" "#000000"(黑色)
buttonTextSize 设置横幅按钮文本大小 0.0+ 14.0
buttonTextShadowColor 设置横幅按钮文本阴影颜色 "#FFFFFF" "#FFFFFF"(白色)
buttonTextShadowAlpha 设置横幅按钮文本阴影透明度 0.0 -> 1.0 1.0
buttonTextShadowOffsetX 设置横幅按钮文本x阴影偏移 -0.0+ 0.0
buttonTextShadowOffsetY 设置横幅按钮文本y阴影偏移 -0.0+ 1.0

路线图

当前版本 : 1.0.3

  • V1.0

    • 修复最终bug
    • 完成Readme.md文档
    • 修复项目组织错误
    • 创建Pod模块
  • V1.1

    • 创建JSON视图行为配置文件
      • 创建自定义消失方法配置
      • 创建自定义动画时间配置
      • 创建自定义停留屏幕时间自动模式计算配置
      • 添加默认图片启用或禁用
  • V1.2

    • 创建管理器JSON配置文件
      • 创建配置以实现多弹出窗口(然后移动到行为配置中,为每种类型分别设置)
      • 创建配置以在给定的视图控制器(或如果是导航控制器,在屏幕上的视图)上添加“阴影”或“模糊”效果
      • 创建配置以允许或禁止与显示的视图进行用户交互(然后移动到行为配置中,为每种类型分别设置)
      • 创建屏幕更改时的自动消失变量
  • V1.3

    • 添加网络问题自动横幅+配置
  • V2.0

    • 创建Swift版本

常见问题解答(FAQ)

目前没有问题被提出。

需求

此项目需要

  • iOS7
  • ARC

许可协议

MIT许可协议
版权所有 (c) 2014 Thibault Carpentier [email protected]

本协议无条件授予任何取得此软件及其相关文档副本(以下简称“软件”)的人士,在软件上不受限制地处理的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本,以及允许向获得软件的人士提供本软件副本,前提是以下条件

上述版权声明和本许可协议应包含在软件的所有副本或实质性部分中。

本软件按“原样”提供,不提供任何类型的保证,无论明确还是暗示,包括但不限于对适销性、针对特定目的的适用性和非侵权的保证。在任何情况下,作者或版权所有者均不应对任何索赔、损害或其他责任承担责任,无论是基于合同、侵权或其他原因,也不论责任产生于、源于或与该软件或对其的使用或其他方式有关。

仓库信息

Owner:      Thibault Carpentier
GitHub:     https://github.com/Loadex
LinkedIn:   www.linkedin.com/in/CarpentierThibault/
StackOverflow:  http://stackoverflow.com/users/1324369/loadex