TTGSnackbar
基于 Swift 的 Android Snackbar 在 iOS 上的实现
Gif
关于
TTGSnackbar 可以用来在屏幕底部或顶部显示一条简短的消息,附带一或两个动作按钮。它出现在屏幕上所有其他元素之上。
在超时或用户点击动作按钮后会消失。
安装
Swift 5
版本 1.9.0+ Xcode 9+ iOS 8+
Swift 4
版本 1.6.0 Xcode 9
iOS 8+
Swift 3
版本 1.5.3 Xcode 8
iOS 8+
CocoaPods
您可以使用 CocoaPods 通过将其添加到您的 Podfile
中来安装 TTGSnackbar
pod "TTGSnackbar"
Carthage
您可以使用 Carthage 通过将其添加到您的 Cartfile
中来安装 TTGSnackbar
github "zekunyan/TTGSnackbar"
导入
并且您需要导入此模块。
import TTGSnackbar
使用方法
显示一条简单信息
let snackbar = TTGSnackbar(message: "TTGSnackbar !", duration: .short)
snackbar.show()
显示带有操作按钮的简单信息
let snackbar = TTGSnackbar(
message: "TTGSnackBar !",
duration: .middle,
actionText: "Action!",
actionBlock: { (snackbar) in
print("Click action!")
}
)
snackbar.show()
显示带有长时间运行的操作的简单信息
let snackbar = TTGSnackbar(
message: "TTGSnackbar !",
duration: .forever,
actionText: "Action",
actionBlock: { (snackbar) in
print("Click action!")
// Dismiss manually after 3 seconds
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + Double(Int64(3 * Double(NSEC_PER_SEC))) / Doubl(NSEC_PER_SEC)) {
snackbar.dismiss()
}
}
)
snackbar.show()
显示带有两个操作按钮的简单信息
let snackbar = TTGSnackbar(message: "Two actions !", duration: .long)
// Action 1
snackbar.actionText = "Yes"
snackbar.actionTextColor = UIColor.green
snackbar.actionBlock = { (snackbar) in NSLog("Click Yes !") }
// Action 2
snackbar.secondActionText = "No"
snackbar.secondActionTextColor = UIColor.yellow
snackbar.secondActionBlock = { (snackbar) in NSLog("Click No !") }
snackbar.show()
显示带有图标图像的简单信息
let snackbar = TTGSnackbar(message: "TTGSnackbar !", duration: .long)
// Add icon image
snackbar.icon = UIImage(named: "emoji_cool_small")
snackbar.show()
[改进!] 在 SnackBar 中显示自定义内容视图
// Instantiate the custom content view
let customContentView = UINib(nibName: "CustomView", bundle:Bundle.main).instantiate(withOwner: nil, options: nil).first as! UIView?
// Initialize the snackbar with the custom content view
let snackbar = TTGSnackbar(customContentView: customContentView, duration: .long)
snackbar.show()
在 SnackBar 中使用手势识别器
let snackbar = TTGSnackbar(message: "TTGSnackbar !", duration: .long)
// Add icon image
snackbar.icon = UIImage(named: "emoji_cool_small")
// Add the gesture recognizer callbacks
ssnackbar.onTapBlock = { snackbar in
snackbar.dismiss()
}
snackbar.onSwipeBlock = { (snackbar, direction) in
// Change the animation type to simulate being dismissed in that direction
if direction == .right {
snackbar.animationType = .slideFromLeftToRight
} else if direction == .left {
snackbar.animationType = .slideFromRightToLeft
} else if direction == .up {
snackbar.animationType = .slideFromTopBackToTop
} else if direction == .down {
snackbar.animationType = .slideFromTopBackToTop
}
snackbar.dismiss()
}
snackbar.show()
[新功能!] 自动处理同时显示一个 SnackBar
TTGSnackbarManager
可自动处理屏幕上显示和替换所展示的 SnackBar。
用法
Swift
let snackbar = TTGSnackbar(message: "TTGSnackbar !", duration: .long)
TTGSnackbarManager.show(snackbar)
Objective-c
TTGSnackbar *bar = [[TTGSnackbar alloc] initWithMessage:@"Bar1" duration:TTGSnackbarDurationMiddle];
[bar setDismissBlock:^(TTGSnackbar * snackBar) {
//whatever you want for dismiss
}];
[[TTGSnackbarManager shared] showSnackbar: bar];
TTGSnackbarManager
使用 SnackBar 的 dismissBlock
属性,它不会替换您添加到 SnackBar 中的任何功能,而是只是将代码添加到现有的块中。
自定义
信息
message: String
定义要显示的消息。 支持多行文本。 支持实时更新。
消息文本颜色
messageTextColor: UIColor
定义消息文本颜色。
消息文本字体
messageTextFont: UIFont
定义消息文本字体。
显示时长
duration: TTGSnackbarDuration
定义显示时长。
TTGSnackbarDuration
: short
(短),middle
(中),long
(长)和 forever
(永远)。当您设置 forever
时,snackbar 在用户点击操作按钮后将显示一个活动指示器,您必须手动关闭 snackbar。
操作标题
actionText: String
定义操作按钮标题。
操作标题颜色
actionTextColor: UIColor
定义操作按钮标题颜色。
操作标题字体
actionTextFont: UIFont
定义操作按钮标题字体。
动作最大宽度
actionMaxWidth: CGFloat
定义动作按钮的最大宽度。最小值为44。
动作文本行数
actionTextNumberOfLines: Int
定义动作按钮标题的行数。默认为1。
动作回调
actionBlock: TTGActionBlock?
当用户点击动作按钮时会调用。
// TTGActionBlock definition.
public typealias TTGActionBlock = (snackbar: TTGSnackbar) -> Void
第二个动作标题、颜色、字体和回调
secondActionText: String
secondActionTextColor: UIColor
secondActionTextFont: UIFont
secondActionBlock: TTGActionBlock?
Snackbar 最大宽度
snackbarMaxWidth: CGFloat
如果在较大设备上不想让Snackbar全宽度显示,则会设置最大宽度。默认为-1,表示全宽度。
Dismiss 回调
dismissBlock: TTGDismissBlock?
当Snackbar自动消失或用户点击动作按钮解散Snackbar时会调用。
// TTGDismissBlock definition.
public typealias TTGDismissBlock = (snackbar: TTGSnackbar) -> Void
点击手势回调
onTapBlock: TTGActionBlock
在用户点击snackbar时将被调用。
// TTGActionBlock definition.
public typealias TTGActionBlock = (snackbar: TTGSnackbar) -> Void
滑动手势回调
onSwipeBlock: TTGSwipeBlock
在用户对snackbar进行滑动操作时将被调用。
/// Swipe gesture callback closure
public typealias TTGSwipeBlock = (_ snackbar: TTGSnackbar, _ direction: UISwipeGestureRecognizerDirection) -> Void
使用滑动手势实现自动消失
shouldDismissOnSwipe: Bool
将决定当对snackbar进行滑动时是否会自动消失。
/// A property to make the snackbar auto dismiss on Swipe Gesture
public var shouldDismissOnSwipe: Bool = false
动画类型
animationType: TTGSnackbarAnimationType
定义了snackbar显示和消失时的样式。
TTGSnackbarAnimationType
: fadeInFadeOut
, slideFromBottomToTop
, slideFromBottomBackToBottom
, slideFromLeftToRight
, slideFromRightToLeft
, slideFromTopToBottom
和 slideFromTopBackToTop
。
animationType
的默认值是 slideFromBottomBackToBottom
,与Android中的Snackbar相同。
动画持续时间
animationDuration: NSTimeInterval
定义了显示和隐藏动画的持续时间。
外边距
leftMargin: CGFloat
,rightMargin: CGFloat
,topMargin: CGFloat
和 bottomMargin: CGFloat
定义了消息条的外边距
[新!] 自定义内容视图以跟随左右外边距
shouldActivateLeftAndRightMarginOnCustomContentView: Bool
当使用 customContentView
时将激活左右外边距
/// a property to enable left and right margin when using customContentView
public var shouldActivateLeftAndRightMarginOnCustomContentView: Bool = false
内边距(内容内边距)
contentInset: UIEdgeInsets
定义了消息条中内容的内边距。默认是 UIEdgeInsets.init(top: 0, left: 4, bottom: 0, right: 4)
。
圆角
cornerRadius: CGFloat
定义了消息条的圆角大小。
图标图片
icon: UIImage
定义了图标图片。
图标图片内容模式
iconContentMode: UIViewContentMode
定义了图标imageView的内容模式。
[新!] 自定义容器视图
containerView: UIView
定义显示snackbar的自定义容器(超)视图。
[新!] 自定义内容视图
customContentView: UIView?
定义显示在snackbar中的自定义内容视图。
[新!] 分隔线视图背景颜色
separateViewBackgroundColor: UIColor = UIColor.gray
定义分隔线颜色。
ActivityIndicatorViewStyle
activityIndicatorViewStyle: UIActivityIndicatorViewStyle
定义snackbar中的ActivityIndicatorView样式。
ActivityIndicatorView 颜色
activityIndicatorViewColor: UIColor
定义snackbar中的ActivityIndicatorView颜色。
动画SpringWithDamping
animationSpringWithDamping: CGFloat
定义了弹力动画的阻尼值。默认值为 0.7。
动画初始弹力速度
animationInitialSpringVelocity: CGFloat
定义了弹力动画的初始速度。默认值为 5。