JCNavigationController.swift 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. //
  2. // JCNavigationController.swift
  3. // JChat
  4. //
  5. // Created by deng on 2017/2/16.
  6. // Copyright © 2017年 HXHG. All rights reserved.
  7. //
  8. import UIKit
  9. protocol CustomNavigation { }
  10. extension CustomNavigation {
  11. typealias Callback = (UIButton) -> Void
  12. func customLeftBarButton(delegate: UIGestureRecognizerDelegate, _ finish: Callback? = nil) {
  13. guard let vc = delegate as? UIViewController else {
  14. return
  15. }
  16. let leftButton = UIButton(frame: CGRect(x: 0, y: 0, width: 60, height: 65 / 3))
  17. leftButton.setImage(UIImage.loadImage("com_icon_back"), for: .normal)
  18. leftButton.setImage(UIImage.loadImage("com_icon_back"), for: .highlighted)
  19. leftButton.addTarget(vc, action: #selector(vc.back(_:)), for: .touchUpInside)
  20. leftButton.setTitle("返回", for: .normal)
  21. leftButton.titleLabel?.font = UIFont.systemFont(ofSize: 16)
  22. leftButton.contentHorizontalAlignment = .left
  23. let item = UIBarButtonItem(customView: leftButton)
  24. vc.navigationItem.leftBarButtonItems = [item]
  25. vc.navigationController?.interactivePopGestureRecognizer?.isEnabled = true
  26. vc.navigationController?.interactivePopGestureRecognizer?.delegate = delegate
  27. if let finish = finish {
  28. finish(leftButton)
  29. }
  30. }
  31. }
  32. final class JCNavigationController: UINavigationController {
  33. //MARK: - life cycle
  34. override init(rootViewController: UIViewController) {
  35. super.init(rootViewController: rootViewController)
  36. _init()
  37. }
  38. override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
  39. super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
  40. _init()
  41. }
  42. required init?(coder aDecoder: NSCoder) {
  43. fatalError("init(coder:) has not been implemented")
  44. }
  45. override func viewDidLoad() {
  46. super.viewDidLoad()
  47. }
  48. //MARK: - override func
  49. override func pushViewController(_ viewController: UIViewController, animated: Bool) {
  50. if viewControllers.count > 0 {
  51. viewController.hidesBottomBarWhenPushed = true
  52. }
  53. super.pushViewController(viewController, animated: animated)
  54. }
  55. override var preferredStatusBarStyle: UIStatusBarStyle {
  56. return .lightContent
  57. }
  58. //MARK: - private func
  59. private func _init() {
  60. self.navigationBar.isTranslucent = false
  61. self.navigationBar.barTintColor = navbar_barTint_color
  62. self.navigationBar.tintColor = navbar_tint_color
  63. self.navigationBar.setBackgroundImage(nil, for: .default)
  64. self.navigationBar.titleTextAttributes = [NSAttributedString.Key.font:navbar_text_font,NSAttributedString.Key.foregroundColor:navbar_tint_color]
  65. //self.navigationBar.setBackgroundImage(<#T##backgroundImage: UIImage?##UIImage?#>, for: <#T##UIBarMetrics#>)
  66. // let navBar = UINavigationBar.appearance()
  67. //// self.navigationBar.isTranslucent = false
  68. // navBar.barTintColor = UIColor(netHex: 0x2dd0cf)
  69. // navBar.tintColor = .white
  70. // var attrs = [NSAttributedStringKey : AnyObject]()
  71. // attrs[NSAttributedStringKey.font] = UIFont.systemFont(ofSize: 18)
  72. // attrs[NSAttributedStringKey.foregroundColor] = UIColor.white
  73. // navBar.titleTextAttributes = attrs
  74. // navBar.backIndicatorTransitionMaskImage = UIImage.loadImage("com_icon_back")
  75. // navBar.backIndicatorImage = UIImage.loadImage("com_icon_back")
  76. }
  77. }