测试已测试 | ✗ |
语言语言 | SwiftSwift |
许可证 | MIT |
发布上次发布 | 2017年3月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✗ |
Maintained by MaximeJunger.
MJSnackBar 是一个纯 Swift 实现的 Android SnackBar,非常适合显示简短信息并允许用户对其执行操作。它会在设置的时间后自动消失。
附带示例项目演示了 MJSnackBar。它是一个包含小小待办事项列表的 UITableView。当你删除一项时,MJSnackBar 将会展示一个按钮,允许用户撤销该操作。
当实例化 MJSnackBar 时,你必须传递一个参数,即它将要显示的视图。
let snackBar = MJSnackBar(onView: self.view)
它是 UIView 的一个子类,所以你可以自由地改变同样的属性,例如 backgroundColor
等。
但是,还有一些 MJSnackBar 属性你可以修改。
/// Animation duration
public var animationDuration: Double = 0.4
/// How long the SnackBar will be shown
public var timeSnackBarShown: Double = 2.0
/// SnackBar height
public var snackBarDefaultHeight: CGFloat = 48.0
/// Allow the SnackBar height to automatically adjust
/// its height based on the content
public var allowHeightChange: Bool = true
/// SnackBar margins
public var spaceBetweenElements: CGFloat = 24.0
/// SnackBar side margins to view
public var sideMargins: CGFloat = 0.0
/// SnackBar bottom margin to view
public var bottomMargin: CGFloat = 0.0
/// SnackBar internal content margin
public var elementsTopBottomMargins: CGFloat = 14.0
/// Font of displayed message
public var messageFont: UIFont? = nil
/// Font of action button
public var actionFont: UIFont? = UIFont.boldSystemFont(ofSize: UIFont.labelFontSize)
/// Message text color
public var messageColor: UIColor = .white
/// Action text color
public var actionColorColor: UIColor = .red
要显示 MJSnackBar,你必须创建一个 MJSnackBarData
实例并调用一个特定的方法
let data = MJSnackBarData(withIdentifier: indexPath.row, message: msg, andActionMessage: "UNDO", objectSaved: dataArray[indexPath.row])
snackbar.show(data: data, onView: self.view)
当向用户展示信息时,你通常会在其后执行某个操作。为了帮助你处理不同的事件,MJSnackBarData
提供了多个字段
为了能够处理不同的事件,你必须实现与 MJSnackBarDelegate
相关的 3 个方法。它们会在 MJSnackBar 显示、隐藏,或用户在其上执行操作时通知你。
为了告诉 bar 你的类可以处理其事件
snackbar.delegate = self
extension ViewController: MJSnackBarDelegate {
func snackBarDisappeared(with data: MJSnackBarData, reason: MJSnackBar.EndShowingType) {
print("👻 SnackBar disappeared \(data.message) - Reason : \(reason)")
}
func snackBarAppeared(with data: MJSnackBarData) {
print("⭐ SnackBar appeared \(data.message)")
}
func snackBarActionTriggered(with data: MJSnackBarData) {
print("👆 SnackBar touched \(data.message)")
if let id = data.id {
let indexPath = IndexPath(row: id, section: 0)
if let originalData = data.originalObject as? String {
self.dataArray.insert(originalData, at: id)
}
self.examplTableView.insertRows(at: [indexPath], with: .automatic)
}
}
}
请随意fork此项目,或者给它一个⭐。