UINotifications 1.3.0

UINotifications 1.3.0

Antoine v.d. Lee 维护。



特性

  • 轻松以应用内通知的形式展示您自定义视图
  • 创建自定义呈现样式
  • 在呈现过程中更新内容

示例

要运行示例项目,克隆仓库,然后从示例目录打开 UINotifications-Example.xcodeproj

成功样式 失败样式
Success Failure

使用

创建通知

import UINotifications

let content = UINotificationContent(title: "My Custom Text", subtitle: "My subtitle", image: UIImage(named: "MyImage"))
let notification = UINotification(content: content, action: UINotificationCallbackAction(callback: {
    print("Tapped the notification!")
}))

let dismissTrigger = UINotificationDurationDismissTrigger(duration: 2.0)
UINotificationCenter.current.show(notification: notification, dismissTrigger: dismissTrigger)

创建自定义样式

import UINotifications

enum NotificationStyle: UINotificationStyle {
    case success
    case failure
    
    var titleFont: UIFont {
        switch self {
        case .success:
            return .systemFont(ofSize: 15, weight: .semibold)
        case .failure:
            return .systemFont(ofSize: 13, weight: .regular)
        }
    }
    
    var subtitleFont: UIFont {
        return .systemFont(ofSize: 13, weight: .regular)
    }
    
    var titleTextColor: UIColor {
        switch self {
        case .success:
            return .black
        case .failure:
            return .white
        }
    }
    
    var subtitleTextColor: UIColor {
        return .darkGray
    }
    
    var backgroundColor: UIColor {
        switch self {
        case .success:
            return #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
        case .failure:
            return #colorLiteral(red: 1, green: 0.431372549, blue: 0.431372549, alpha: 1)
        }
    }
    
    /// The height of the notification which applies on the notification view.
    var height: UINotification.Height {
        switch self {
        case .success:
            return .navigationBar
        case .failure:
            return .statusBar
        }
    }

    /// Use this to set a max width to the notification view.
    var maxWidth: CGFloat? {
        return nil
    }
    
    /// When `true`, the notification is swipeable and tappable.
    var interactive: Bool {
        return true
    }
    
    var chevronImage: UIImage? {
        return #imageLiteral(resourceName: "iconToastChevron")
    }
}

并使用它

let notification = UINotification(content: myContent, style: CustomNotificationStyle.success)

使用自定义关闭触发器

let manualDismissTrigger = UINotificationManualDismissTrigger()
UINotificationCenter.current.show(notification: notification, dismissTrigger: manualDismissTrigger)

/// Do other stuff..

manualDismissTrigger.trigger() // Dismiss

创建自定义 UINotificationView

  • 创建自定义视图并从 UINotificationView 继承
  • UINotificationCenter 上设置您的自定义视图
UINotificationCenter.current.notificationViewType = MyCustomNotificationView.self

使用自定义 UIButton

通过在 UINotification 上设置 button 属性,您可以为通知简单添加一个按钮。

notification.button = UIButton(type: .system)

Button

创建自定义演示者

创建一个自定义演示者来管理演示和消失动画。

  • 创建一个从 UINotificationPresenter 继承的自定义类。
  • UINotificationCenter 上设置您的自定义演示者
UINotificationCenter.current.presenterType = MyCustomPresenter.self

查看 UINotificationEaseOutEaseInPresenter 作为一个示例。

允许重复请求

默认情况下,已经排队等待的通知不会再次排队。这是为了防止通知快速连续发生时,出现无限循环演示的情况。

要禁用此设置

UINotificationCenter.current.isDuplicateQueueingAllowed = true

通讯

  • 如果你发现了一个错误,请打开一个问题。
  • 如果你有功能请求,请打开一个问题。
  • 如果你想贡献,提交一个拉取请求。

安装

CocoaPods

使用以下命令安装CocoaPods,它是一个Cocoa项目依赖管理器

$ gem install cocoapods

要在Xcode项目中使用CocoaPods集成UINotifications,请在你的Podfile中指定它

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!

target '<Your Target Name>' do
    pod 'UINotifications', '~> 1.0.0'
end

然后运行以下命令

$ pod install

Carthage

Carthage 是一个去中心化的依赖管理器,它可以构建你的依赖并提供二进制框架。

你可以使用以下命令使用Homebrew安装 Carthage

$ brew update
$ brew install carthage

要在Xcode项目中使用Carthage集成UINotifications,请在你的Cartfile中指定它

github "WeTransfer/UINotifications" ~> 1.00

运行carthage update来构建框架并将构建的UINotifications.framework拖动到你的Xcode项目中。

手动安装

如果你不希望使用上述任何依赖管理器,你可以手动将UINotifications集成到项目中。

嵌入式框架

  • 打开终端,使用cd命令进入顶级项目目录,如果您的项目还没有初始化为git仓库,请运行以下命令:

    $ git init
  • 通过以下命令将UINotifications添加为git 子模块

    $ git submodule add https://github.com/WeTransfer/UINotifications.git
  • 打开新的UINotifications文件夹,并将UINotifications.xcodeproj拖动到应用Xcode项目的Project Navigator中。

    它应该嵌套在应用蓝色项目图标之下。它位于所有其他Xcode组之上或之下无关紧要。

  • 在Project Navigator中选择UINotifications.xcodeproj,并验证部署目标与您的应用目标相匹配。

  • 接下来,在Project Navigator(蓝色项目图标)中选择您的应用项目,导航到目标配置窗口,并在侧边栏的“Targets”标题下选择应用目标。

  • 在那个窗口的标签栏上打开“General”选项卡。

  • 在“Embedded Binaries”部分下点击+按钮。

  • 选择UINotifications.framework

  • 就是这样!

    UINotifications.framework会自动添加为目标依赖项,在复制文件构建阶段建立链接框架和内嵌框架,这就是在模拟器和设备上构建所需全部。


发布说明

查看CHANGELOG.md以获取更改列表。

许可协议

UINotifications遵循MIT协议。更多信息请参阅LICENSE文件。