特性
- 轻松以应用内通知的形式展示您自定义视图
- 创建自定义呈现样式
- 在呈现过程中更新内容
示例
要运行示例项目,克隆仓库,然后从示例目录打开 UINotifications-Example.xcodeproj
成功样式 | 失败样式 |
---|---|
使用
创建通知
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)
创建自定义演示者
创建一个自定义演示者来管理演示和消失动画。
- 创建一个从
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文件。