Commit 4d2a95fb by Daniel Dahan

development: added Snackbar alignment to top and bottom with delegation

parent 15a0e382
...@@ -30,36 +30,42 @@ ...@@ -30,36 +30,42 @@
import UIKit import UIKit
//@objc(SnackbarDelegate) @objc(SnackbarControllerDelegate)
//public protocol SnackbarDelegate { public protocol SnackbarControllerDelegate {
// /** /**
// A delegation method that is executed when a Snackbar will show. A delegation method that is executed when a Snackbar will show.
// - Parameter snackbar: A Snackbar. - Parameter snackbarController: A SnackbarController.
// */ */
// @objc @objc
// optional func snackbarWillShow(snackbar: Snackbar) optional func snackbarControllerWillShow(snackbarController: SnackbarController)
//
// /** /**
// A delegation method that is executed when a Snackbar did show. A delegation method that is executed when a Snackbar did show.
// - Parameter snackbar: A Snackbar. - Parameter snackbarController: A SnackbarController.
// */ */
// @objc @objc
// optional func snackbarDidShow(snackbar: Snackbar) optional func snackbarControllerDidShow(snackbarController: SnackbarController)
//
// /** /**
// A delegation method that is executed when a Snackbar will hide. A delegation method that is executed when a Snackbar will hide.
// - Parameter snackbar: A Snackbar. - Parameter snackbarController: A SnackbarController.
// */ */
// @objc @objc
// optional func snackbarWillHide(snackbar: Snackbar) optional func snackbarControllerWillHide(snackbarController: SnackbarController)
//
// /** /**
// A delegation method that is executed when a Snackbar did hide. A delegation method that is executed when a Snackbar did hide.
// - Parameter snackbar: A Snackbar. - Parameter snackbarController: A SnackbarController.
// */ */
// @objc @objc
// optional func snackbarDidHide(snackbar: Snackbar) optional func snackbarControllerDidHide(snackbarController: SnackbarController)
//} }
@objc(SnackbarAlignment)
public enum SnackbarAlignment: Int {
case top
case bottom
}
extension UIViewController { extension UIViewController {
/** /**
...@@ -86,6 +92,12 @@ open class SnackbarController: RootController { ...@@ -86,6 +92,12 @@ open class SnackbarController: RootController {
/// Reference to the Snackbar. /// Reference to the Snackbar.
open internal(set) lazy var snackbar: Snackbar = Snackbar() open internal(set) lazy var snackbar: Snackbar = Snackbar()
/// Delegation handler.
open weak var delegate: SnackbarControllerDelegate?
/// Snackbar alignment setting.
open var snackbarAlignment = SnackbarAlignment.bottom
/** /**
Animates to a SnackbarStatus. Animates to a SnackbarStatus.
- Parameter status: A SnackbarStatus enum value. - Parameter status: A SnackbarStatus enum value.
...@@ -96,6 +108,12 @@ open class SnackbarController: RootController { ...@@ -96,6 +108,12 @@ open class SnackbarController: RootController {
return return
} }
if .visible == status {
s.delegate?.snackbarControllerWillShow?(snackbarController: s)
} else {
s.delegate?.snackbarControllerWillHide?(snackbarController: s)
}
s.isAnimating = true s.isAnimating = true
s.isUserInteractionEnabled = false s.isUserInteractionEnabled = false
...@@ -116,6 +134,12 @@ open class SnackbarController: RootController { ...@@ -116,6 +134,12 @@ open class SnackbarController: RootController {
s.isUserInteractionEnabled = true s.isUserInteractionEnabled = true
s.snackbar.status = status s.snackbar.status = status
if .visible == status {
s.delegate?.snackbarControllerDidShow?(snackbarController: s)
} else {
s.delegate?.snackbarControllerDidHide?(snackbarController: s)
}
completion?(s.snackbar) completion?(s.snackbar)
} }
} }
...@@ -162,7 +186,11 @@ open class SnackbarController: RootController { ...@@ -162,7 +186,11 @@ open class SnackbarController: RootController {
let p = snackbar.intrinsicContentSize.height + snackbar.grid.layoutEdgeInsets.top + snackbar.grid.layoutEdgeInsets.bottom let p = snackbar.intrinsicContentSize.height + snackbar.grid.layoutEdgeInsets.top + snackbar.grid.layoutEdgeInsets.bottom
snackbar.width = view.width snackbar.width = view.width
snackbar.height = p snackbar.height = p
snackbar.y = .visible == status ? view.height - p : view.height if .bottom == snackbarAlignment {
snackbar.y = .visible == status ? view.height - p : view.height
} else {
snackbar.y = .visible == status ? 0 : -snackbar.height
}
snackbar.divider.reload() snackbar.divider.reload()
} }
...@@ -175,9 +203,6 @@ open class SnackbarController: RootController { ...@@ -175,9 +203,6 @@ open class SnackbarController: RootController {
return return
} }
vc.view.x = 0 vc.view.frame = view.bounds
vc.view.y = 0
vc.view.width = view.width
vc.view.height = .visible == status ? view.height - snackbar.height : view.height
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment