NoticeBoard.swift

用来管理多个Notice视图的管理器,不在视图层级中显示。

定义

布局样式

1
2
3
4
5
6
7
8
9
10
11
/// 布局样式
///
/// - tile: 平铺,默认(所有通知都可见,但是通知过多会超出屏幕)
/// - replace: 取代旧的通知(旧的采用fade动画淡出)
/// - remove: 移除旧的通知(旧的采用moveout动画移出屏幕)
/// - overlay: 覆盖在旧的通知上层(切勿堆积过多)
/// - stack: 堆叠(最新的通知会遮挡旧的通知)
public enum LayoutStyle {

case tile, replace, remove, overlay, stack
}

窗口层级

1
2
3
4
5
6
7
8
9
10
11
12
public enum Level : UIWindowLevel {

case low

case normal

case high

case veryHigh

internal var stringValue: String { get }
}

属性

shared

1
public static let shared = NoticeBoard()

用于获取默认提供的一个共享实例。

notices

1
public var notices = [Notice]()

用来存放当前的NoticeBoard中已经post出的所有Notice。

layoutStyle

1
public var layoutStyle = LayoutStyle.tile

当前NoticeBoard采用的视图布局方案,默认为tile。

函数

post

1
2
3
4
5
6
7
8
9
10
11
12
13
/// post一条通知
///
/// - Parameters:
/// - notice: 通知
/// - duration: 持续时间
open class func post(_ notice: Notice, duration: TimeInterval = default)

/// post一条通知
///
/// - Parameters:
/// - notice: 通知
/// - duration: 持续时间
open func post(_ notice: Notice, duration: TimeInterval = default)

用法:

1
2
3
4
let notice = Notice(title: "hello", icon: nil, body: "hello")
NoticeBoard.post(notice)
// 或者
NoticeBoard.shared.post(notice)

remove

1
2
3
4
5
6
7
8
9
10
11
/// 移除某个通知
///
/// - Parameters:
/// - notice: 通知
public class func remove(_ notice: Notice?)

/// 移除某个通知
///
/// - Parameters:
/// - notice: 通知
public func remove(_ notice: Notice?)

用法:

1
2
3
NoticeBoard.remove(notice)
// 或者
NoticeBoard.shared.remove(notice)

clean

1
2
3
4
5
/// 移除所有通知
public class func clean()

/// 移除所有通知
public func clean()

用法:

1
2
3
NoticeBoard.clean()
// 或者
NoticeBoard.shared.clean()

便捷的 post

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
/// post一条纯文本消息,默认主题
///
/// - Parameters:
/// - message: 消息内容
/// - duration: 持续时间
public class func post(_ message: String?, duration: TimeInterval = default) -> Notice

/// post一条消息(纯色主题+消息内容)
///
/// - Parameters:
/// - theme: 主题
/// - message: 消息内容
/// - duration: 持续时间
public class func post(_ theme: Notice.Theme, message: String?, duration: TimeInterval) -> Notice

/// post一条消息(UIBlurEffect主题+消息内容)
///
/// - Parameters:
/// - blurEffectStyle: 主题
/// - message: 消息内容
/// - duration: 持续时间
public class func post(_ theme: UIBlurEffectStyle, message: String?, duration: TimeInterval) -> Notice

/// post一条消息(纯色主题+消息标题+消息内容)
///
/// - Parameters:
/// - theme: 主题
/// - title: 标题
/// - message: 消息内容
/// - duration: 持续时间
public class func post(_ theme: Notice.Theme, title: String?, message: String?, duration: TimeInterval) -> Notice

/// post一条消息(UIBlurEffect主题+消息标题+消息内容)
///
/// - Parameters:
/// - blurEffectStyle: 主题
/// - title: 标题
/// - message: 消息内容
/// - duration: 持续时间
public class func post(_ theme: UIBlurEffectStyle, title: String?, message: String?, duration: TimeInterval) -> Notice

/// post一条消息(纯色主题+icon+消息标题+消息内容+按钮)
///
/// - Parameters:
/// - theme: 主题
/// - icon: 图标
/// - title: 标题
/// - message: 消息内容
/// - duration: 持续时间
/// - action: 按钮事件
public static func post(_ theme: Notice.Theme, icon: UIImage?, title: String?, message: String?, duration: TimeInterval, action: ((Notice, UIButton) -> Void)? = default) -> Notice

/// post一条消息(UIBlurEffectStyle主题+icon+消息标题+消息内容+按钮)
///
/// - Parameters:
/// - blurEffectStyle: 主题
/// - icon: 图标
/// - title: 标题
/// - message: 消息内容
/// - duration: 持续时间
/// - action: 按钮事件
public static func post(_ theme: UIBlurEffectStyle, icon: UIImage?, title: String?, message: String?, duration: TimeInterval, action: ((Notice, UIButton) -> Void)? = default) -> Notice

用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 只有message
NoticeBoard.post("hello")
// message 和 duration
NoticeBoard.post("hello", duration: 1)
// theme、message 和 duration
NoticeBoard.post(.error, message: "message body", duration: 1)
// theme、title、message 和 duration
NoticeBoard.post(.error, title: "error", message: "message body", duration: 1)
// theme、icon、title、message 和 duration
let img = UIImage.init(named: "alert-circle")
NoticeBoard.post(.error, icon: img, title: "error", message: "message body", duration: 1)
// theme、icon、title、message、duration 和 action
NoticeBoard.post(.error, icon: img, title: "error", message: "message body", duration: 1) { (notice, sender) in
print("button tapped")
}



评论

文明评论,请勿灌水。为了便于区分和接收回复提醒,请您在留言时填写一下昵称邮箱。 不定期清理没有昵称和灌水的评论。