概览
Bulletin 是一个可定制的提醒库,让您能够轻松构建具有高度风格的提醒应用于您的应用程序。
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
安装
- Swift 4:版本 <= 1.2.4
- Swift 5:版本 >= 1.3.0
CocoaPods
Bulletin 集成了 CocoaPods!
- 将以下内容添加到您的
Podfile
use_frameworks!
pod 'Bulletin'
- 在您的项目目录中,运行
pod install
- 在您需要的地方导入
Bulletin
模块 - 税费
手动方式
您还可以手动将源文件添加到项目中。
- 克隆此 git 仓库
- 将
Bulletin/
子目录中的所有 Swift 文件添加到您的项目中 - 税费
基础知识
公布通报的一般流程如下
let contentView = UIView()
let bulletin = BulletinView()
bulletin.embed(content: contentView)
bulletin.present()
您创建一个内容视图,稍后将其嵌入到含有的 BulletinView
中。然后我们创建一个 BulletinView
并配置其样式,嵌入我们的内容,并展示通报。
BulletinView
将使用您视图的内禀内容大小来确定其在屏幕上的高度。因此,请确保您已正确设置约束!或者,如果您想为您的降噪提供静态高度,请使用以下版本的 embed()
函数
bulletin.embed(content: contentView, usingStrictHeight: 100)
默认样式
BulletinView
许多 customization options; 由于这个原因,它包括为最常见用例提前配置的样式。当前的默认样式包括
- 通知
- 横幅
- 状态栏(吐司)
- 警报
- HUD
- 表格
您可以使用以下任一默认样式创建通报
let bulletin = BulletinView.notification()
let bulletin = BulletinView.banner()
...
定制
当然,您可能想随心所欲地调整一切。以下是一些您可以更改的示例
let bulletin = BulletinView()
// Basic options
bulletin.position = .top
bulletin.duration = .limit(5)
bulletin.soundEffectUrl = URL(...)
// Presentation
bulletin.presentationAnimation.duration = 0.4
bulletin.presentationAnimation.springDamping = 0.7
bulletin.presentationAnimation.springVelocity = 0.4
// Style
bulletin.style.statusBar = .lightContent
bulletin.style.backgroundEffect = .darken(alpha: 0.5)
bulletin.style.edgeInsets = UIEdgeInsets(horizontal: 8, vertical: 24)
bulletin.style.roundedCorners = .allCorners
bulletin.style.roundedCornerRadius = 4
bulletin.style.shadowColor = UIColor.black
bulletin.style.shadowOffset = CGSize(width: 0, height: 4)
bulletin.style.shadowRadius = 4
bulletin.style.shadowAlpha = 0.25
bulletin.style.isBackgroundDismissEnabled = true
// Taptics
bulletin.taptics.presentation = .notification(.success)
bulletin.taptics.action = .impact(.light)
bulletin.taptics.snapping = .impact(.medium)
等等。有关特定配置选项的使用,请参阅代码文档。
操作
当有人在您的通报上轻点时,您可能想执行一些酷炫的动作。BulletinView
有一个可选的 action
处理器,正好用于此!
let bulletin = BulletinView()
bulletin.action = {
print("You tapped me!")
}
当调用动作处理程序时,通报将自动消失。
外观代理
公告视图
还可以有一个可选的外观代理
,它提供了有关公告何时以及如何展示/关闭的信息。代理包括以下功能
func bulletinViewWillAppear(_ bulletin: BulletinView)
func bulletinViewWillDisappear(_ bulletin: BulletinView)
func bulletinViewWasAutomaticallyDismissed(_ bulletin: BulletinView)
func bulletinViewWasInteractivelyDismissed(_ bulletin: BulletinView)
SnapKit
SnapKit是一个优秀的库,可以帮助简化使用程序化布局约束的痛苦。我每天都在使用它,你也应该使用!公告通过一个专门的snp_embed()
函数提供了基本的SnapKit集成,该函数接受SnapKit的ConstraintItem
,而不是严格的宽度。
bulletin.snp_embed(content: contentView, usingStrictHeightConstraint: anotherView.snp.height)
Objective-C
公告对Objective-C的支持有限。创建和展示公告与在Swift中执行的方式完全一样
@import Bulletin;
UIView *content = [[UIView alloc] init];
content.backgroundColor = [UIColor whiteColor];
BulletinView *bulletin = [[BulletinView alloc] init];
[bulletin setAppearanceDelegate:self];
[bulletin embedContent:content usingStrictHeight:120.0f];
[bulletin present];
使用Objective-C时,公告不支持高级样式选项。然而,基本展示选项都是可用的
BulletinView *bulletin = [[BulletinView alloc] init];
[bulletin setPosition:kBulletinViewPositionTop];
[bulletin setDuration:5];
[bulletin setLevel:kBulletinViewLevelDefault];
[bulletin setEdgeInsets:UIEdgeInsetsMake(8, 8, 8, 8)];
[bulletin setBackgroundEffect:kBulletinViewBackgroundEffectDarkenMedium];
[bulletin embedContent:contentView];
[bulletin present];
如果你需要更多高级样式选项,你可以创建一个简单的Swift工场类或者为BulletinView
创建一个扩展,返回配置齐全的公告
class BulletinFactory {
static func sexyBulletin() -> BulletinView {
let bulletin = BulletinView()
bulletin.position = .bottom
bulletin.style.edgeInsets = UIEdgeInsets(horizontal: 0, vertical: 8)
bulletin.style.backgroundEffect = .darken(alpha: 0.5)
...
return bulletin
}
}
extension BulletinView {
static func sexy() -> BulletinView {
let bulletin = BulletinView()
bulletin.position = .bottom
bulletin.style.edgeInsets = UIEdgeInsets(horizontal: 0, vertical: 8)
bulletin.style.backgroundEffect = .darken(alpha: 0.5)
...
return bulletin
}
}
贡献
欢迎提交拉取请求。修复错误?添加新功能?打开一个PR,我们会将其合并!