TTGSnackbar 1.12.0

TTGSnackbar 1.12.0

测试已测试
语言语言 SwiftSwift
许可 MIT
发布上次发布2024年3月
SPM支持 SPM

zekunyantutuge 维护。



TTGSnackbar

基于 Swift 的 Android Snackbar 在 iOS 上的实现

Build Status Version License Platform Swift5 Apps Using Total Download

Screenshot

Gif

Screenshot

关于

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

使用方法

显示一条简单信息

Example

let snackbar = TTGSnackbar(message: "TTGSnackbar !", duration: .short)
snackbar.show()

显示带有操作按钮的简单信息

Example

let snackbar = TTGSnackbar(
    message: "TTGSnackBar !",
    duration: .middle,
    actionText: "Action!",
    actionBlock: { (snackbar) in
        print("Click action!")
    }
)
snackbar.show()

显示带有长时间运行的操作的简单信息

Example

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()

显示带有两个操作按钮的简单信息

Example

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()

显示带有图标图像的简单信息

Example

let snackbar = TTGSnackbar(message: "TTGSnackbar !", duration: .long)

// Add icon image
snackbar.icon = UIImage(named: "emoji_cool_small")

snackbar.show()

[改进!] 在 SnackBar 中显示自定义内容视图

Example

// 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 中使用手势识别器

Example

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, slideFromTopToBottomslideFromTopBackToTop

animationType 的默认值是 slideFromBottomBackToBottom,与Android中的Snackbar相同。

动画持续时间

animationDuration: NSTimeInterval 定义了显示和隐藏动画的持续时间。

外边距

leftMargin: CGFloatrightMargin: CGFloattopMargin: CGFloatbottomMargin: 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。

联系我

[email&protected]