Нет описания

NavigationBarInOutAnimator.swift 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. //
  2. // NavigationBarInOutAnimator.swift
  3. // PaiaiUIKit
  4. //
  5. // Created by ffib on 2019/1/15.
  6. // Copyright © 2019 yb. All rights reserved.
  7. //
  8. import UIKit
  9. public protocol NavigationBarInOutAnimator: class {
  10. var navigationView: UIView { get }
  11. func navigationBarFadeIn()
  12. func navigationBarFadeOut()
  13. func navigationBarFadeAndMoveIn()
  14. func navigationBarFadeAndMoveOut()
  15. func navigationBarFadeOutWithPercentage(_ percentage: CGFloat)
  16. func navigationBarFadeInWithPercentage(_ percentage: CGFloat)
  17. }
  18. public extension NavigationBarInOutAnimator where Self: UIViewController & NavigationBarPushAndPopDelegate {
  19. func navigationBarFadeIn() {
  20. UIView.animate(withDuration: 0.3, animations: {
  21. self.navigationView.alpha = 1
  22. }, completion: nil)
  23. }
  24. func navigationBarFadeOut() {
  25. UIView.animate(withDuration: 0.3, animations: {
  26. self.navigationView.alpha = 0
  27. }, completion: nil)
  28. }
  29. func navigationBarFadeAndMoveIn() {
  30. setNavigationBar()
  31. navigationController?.navigationBar.layoutIfNeeded()
  32. let originX = navigationView.center.x
  33. navigationView.center.x = UIScreen.main.bounds.width
  34. UIView.animate(withDuration: 0.3, animations: {
  35. self.navigationView.alpha = 1
  36. self.navigationView.center.x = originX
  37. }, completion: nil)
  38. }
  39. func navigationBarFadeAndMoveOut() {
  40. UIView.animate(withDuration: 0.3, animations: {
  41. self.navigationView.alpha = 0
  42. self.navigationView.center.x = UIScreen.main.bounds.width
  43. }, completion: { _ in
  44. self.navigationView.removeFromSuperview()
  45. })
  46. }
  47. func navigationBarFadeOutWithPercentage(_ percentage: CGFloat) {
  48. navigationView.alpha = 1 * (1 - 1.1 * percentage)
  49. navigationView.center.x = UIScreen.main.bounds.width / 2 * (1 + 1.1 * percentage)
  50. }
  51. func navigationBarFadeInWithPercentage(_ percentage: CGFloat) {
  52. navigationView.alpha = 1 * percentage
  53. }
  54. }