TSBaseNavigationBarView.swift 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. //
  2. // TSBaseNavigationBarView.swift
  3. // TSLiveWallpaper
  4. //
  5. // Created by 100Years on 2024/12/20.
  6. //
  7. open class TSBaseNavContentBarView: UIView {
  8. open lazy var statuView: UIView = {
  9. let view = UIView()
  10. return view
  11. }()
  12. open lazy var barView: UIView = {
  13. let view = UIView()
  14. return view
  15. }()
  16. override init(frame: CGRect) {
  17. super.init(frame: frame)
  18. addSubview(statuView)
  19. addSubview(barView)
  20. statuView.snp.makeConstraints { make in
  21. make.top.leading.trailing.equalTo(0)
  22. make.height.equalTo(k_Height_StatusBar)
  23. }
  24. barView.snp.makeConstraints { make in
  25. make.leading.trailing.equalTo(0)
  26. make.top.equalTo(k_Height_StatusBar)
  27. make.height.equalTo(k_Height_NavBar)
  28. }
  29. }
  30. required public init?(coder: NSCoder) {
  31. fatalError("init(coder:) has not been implemented")
  32. }
  33. }
  34. open class TSNormalNavigationBarView: TSBaseNavContentBarView {
  35. // MARK: - Properties
  36. var navBgColor: UIColor!
  37. var navTitleColor: UIColor!
  38. var navTitleFont: UIFont!
  39. var navLeftFont: UIFont!
  40. var navRightFont: UIFont!
  41. public lazy var leftNavBtn: UIButton = {
  42. let button = createNavButton()
  43. button.contentHorizontalAlignment = .left
  44. button.contentEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
  45. return button
  46. }()
  47. public lazy var titleNavBtn: UIButton = {
  48. let button = createNavButton()
  49. button.titleLabel?.font = navTitleFont
  50. return button
  51. }()
  52. public lazy var rightNavBtn: UIButton = {
  53. let button = createNavButton()
  54. button.titleLabel?.font = navRightFont
  55. button.titleLabel?.adjustsFontSizeToFitWidth = true
  56. button.contentHorizontalAlignment = .right
  57. button.setTitleColor(TSColorConfigShared.themeColor, for: .normal)
  58. button.contentEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
  59. return button
  60. }()
  61. // MARK: - Initializers
  62. override init(frame: CGRect) {
  63. super.init(frame: frame)
  64. createData()
  65. createView()
  66. }
  67. @MainActor required public init?(coder: NSCoder) {
  68. fatalError("init(coder:) has not been implemented")
  69. }
  70. // MARK: - Setup Methods
  71. private func createData() {
  72. navBgColor = TSColorConfigShared.naviMianBgColor
  73. navTitleColor = TSColorConfigShared.naviMianTextColor
  74. navTitleFont = .font(size: 18,weight:.medium)
  75. navLeftFont = .font(size: 16,weight:.medium)
  76. navRightFont = .font(size: 16,weight:.medium)
  77. }
  78. private func createView() {
  79. // let space: CGFloat = 10
  80. let margins: CGFloat = 16
  81. backgroundColor = navBgColor
  82. barView.addSubview(leftNavBtn)
  83. barView.addSubview(titleNavBtn)
  84. barView.addSubview(rightNavBtn)
  85. leftNavBtn.snp.makeConstraints { make in
  86. make.leading.equalTo(margins)
  87. make.centerY.equalToSuperview()
  88. make.width.height.equalTo(44.0)
  89. }
  90. rightNavBtn.snp.makeConstraints { make in
  91. make.trailing.equalTo(-margins)
  92. make.centerY.equalToSuperview()
  93. make.width.height.equalTo(44.0)
  94. }
  95. titleNavBtn.snp.makeConstraints { make in
  96. make.leading.equalTo(leftNavBtn.snp.trailing).offset(margins)
  97. make.trailing.equalTo(rightNavBtn.snp.leading).offset(-margins)
  98. make.centerY.equalToSuperview()
  99. make.height.equalTo(44.0)
  100. }
  101. }
  102. // MARK: - Helper Methods
  103. public func setTitleName(_ name: String) -> UIButton {
  104. titleNavBtn.setTitle(name, for: .normal)
  105. return titleNavBtn
  106. }
  107. public func setTitleNavigationItem(name: String, imageName: String, target: Any?, action: Selector) -> UIButton {
  108. setNavButton(button: titleNavBtn, name: name, imageName: imageName, target: target, action: action)
  109. return titleNavBtn
  110. }
  111. public func setLeftNavigationItem(name: String, imageName: String, target: Any?, action: Selector) -> UIButton {
  112. setNavButton(button: leftNavBtn, name: name, imageName: imageName, target: target, action: action)
  113. return leftNavBtn
  114. }
  115. public func setRightNavigationItem(name: String, imageName: String, target: Any?, action: Selector) -> UIButton {
  116. setNavButton(button: rightNavBtn, name: name, imageName: imageName, target: target, action: action)
  117. return rightNavBtn
  118. }
  119. public func setNavButton(button: UIButton, name: String, imageName: String, target: Any?, action: Selector) {
  120. button.setTitle(name, for: .normal)
  121. if imageName.count > 0 {
  122. let image = UIImage(bundleNamed: imageName)?.withRenderingMode(.alwaysOriginal)
  123. if let image = image {
  124. button.setImage(image.mirror, for: .normal)
  125. }
  126. }
  127. button.addTarget(target, action: action, for: .touchUpInside)
  128. }
  129. public func createNavButton() -> UIButton {
  130. let button = UIButton()
  131. button.setTitleColor(navTitleColor, for: .normal)
  132. button.titleLabel?.font = navRightFont
  133. button.titleLabel?.adjustsFontSizeToFitWidth = true
  134. return button
  135. }
  136. }