TSBaseVC.swift 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285
  1. //
  2. // TSBaseVC.swift
  3. // TSLiveWallpaper
  4. //
  5. // Created by 100Years on 2024/12/20.
  6. //
  7. import UIKit
  8. class TSBaseVC: UIViewController {
  9. private var blurEffect: UIBlurEffect?
  10. private lazy var navBlurView: UIVisualEffectView = {
  11. let view = UIVisualEffectView()
  12. return view
  13. }()
  14. lazy var contentView: UIView = {
  15. let view = UIView()
  16. return view
  17. }()
  18. lazy var navBarContentView: UIView = {
  19. let view = UIView()
  20. view.backgroundColor = .clear
  21. return view
  22. }()
  23. private lazy var normalNavBarView: TSNormalNavigationBarView = {
  24. let view = TSNormalNavigationBarView()
  25. return view
  26. }()
  27. lazy var viewBgImageView: UIImageView = {
  28. let view = UIImageView()
  29. view.backgroundColor = .clear
  30. return view
  31. }()
  32. lazy var nullView: UIView = {
  33. let view = UIView()
  34. view.backgroundColor = .clear
  35. return view
  36. }()
  37. lazy var netWorkView: UIView = {
  38. let view = UIView()
  39. view.backgroundColor = .clear
  40. return view
  41. }()
  42. override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
  43. super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
  44. }
  45. required init?(coder: NSCoder) {
  46. super.init(coder: coder)
  47. }
  48. /// 提供一个无参数的默认初始化方法
  49. init() {
  50. super.init(nibName: nil, bundle: nil)
  51. }
  52. override func viewDidLoad() {
  53. super.viewDidLoad()
  54. setupSuperSomeView()
  55. createData()
  56. createView()
  57. dealThings()
  58. }
  59. private func setupSuperSomeView() {
  60. edgesForExtendedLayout = [.all]
  61. view.addSubview(contentView)
  62. view.addSubview(navBarContentView)
  63. contentView.snp.makeConstraints { make in
  64. make.top.equalTo(k_Nav_Height)
  65. make.leading.trailing.bottom.equalToSuperview()
  66. }
  67. navBarContentView.snp.makeConstraints { make in
  68. make.leading.top.trailing.equalToSuperview()
  69. make.height.equalTo(k_Nav_Height)
  70. }
  71. view.backgroundColor = .mainBg
  72. view.layoutIfNeeded()
  73. }
  74. func setViewBgImageNamed(named:String){
  75. if viewBgImageView.superview == nil {
  76. view.insertSubview(viewBgImageView, at: 0)
  77. viewBgImageView.snp.makeConstraints { make in
  78. make.edges.equalToSuperview()
  79. }
  80. }
  81. viewBgImageView.image = UIImage(named: named)
  82. }
  83. //子类重写
  84. func createData(){
  85. }
  86. func createView(){
  87. }
  88. func dealThings(){
  89. }
  90. func addNormalNavBarView(){
  91. navBarContentView.addSubview(normalNavBarView)
  92. normalNavBarView.snp.makeConstraints { make in
  93. make.edges.equalToSuperview()
  94. }
  95. }
  96. // func useTransparentBlurredNavigationBar() {
  97. // navBarView.removeFromSuperview()
  98. // edgesForExtendedLayout = .all
  99. //
  100. // view.addSubview(navBlurView)
  101. // navBlurView.snp.makeConstraints { make in
  102. // make.left.top.right.equalToSuperview()
  103. // make.height.equalTo(k_Nav_Height)
  104. // }
  105. //
  106. // setClearNavigationBar()
  107. // navBarView.titleNavBtn?.titleLabel?.alpha = 0.0
  108. // navBlurView.contentView.addSubview(navBarView)
  109. //
  110. // navBarView.snp.makeConstraints { make in
  111. // make.edges.equalToSuperview()
  112. // }
  113. //
  114. // contentView.snp.updateConstraints { make in
  115. // make.top.equalToSuperview()
  116. // }
  117. // }
  118. //
  119. // func handleTransparentBlurredNavigationBar(scrollViewY: CGFloat) {
  120. // if scrollViewY >= - kStatusBar_Height {
  121. // navBlurView.effect = blurEffect
  122. // navBarView.titleNavBtn?.titleLabel?.alpha = 1.0
  123. // } else {
  124. // navBlurView.effect = nil
  125. // navBarView.titleNavBtn?.titleLabel?.alpha = 0.0
  126. // }
  127. // }
  128. // ... 其他方法根据需要重写 ...
  129. override func viewWillAppear(_ animated: Bool) {
  130. // super.viewWillAppear(animated)
  131. debugPrint("进入------>\(String(describing: type(of: self)))")
  132. }
  133. deinit {
  134. NotificationCenter.default.removeObserver(self)
  135. debugPrint("♻️♻️♻️ TGRootViewController -> \(type(of: self)) deinit ♻️♻️♻️")
  136. }
  137. // MARK: - 导航栏方法
  138. func setTitleText(_ title: String) {
  139. _ = normalNavBarView.setTitleName(NSLocalizedString(title, comment: ""))
  140. }
  141. func setPageTitle(_ title: String) {
  142. let pageTitle = title
  143. let backTitle = " "
  144. setTitleText(pageTitle)
  145. _ = setNavigationItem(backTitle, imageName: "navi_back_white", direction: .left, action: #selector(navBarClickLeftAction))
  146. }
  147. func setNavigationItem(_ name: String, imageName: String, direction: NSTextAlignment, action: Selector) -> UIButton {
  148. if direction == .left {
  149. return normalNavBarView.setLeftNavigationItem(name: name, imageName: imageName, target: self, action: action)
  150. } else {
  151. return normalNavBarView.setRightNavigationItem(name: name, imageName: imageName, target: self, action: action)
  152. }
  153. }
  154. @objc func navBarClickLeftAction() {
  155. debugPrint("navBarClickLeftAction -> \(type(of: self))")
  156. pop()
  157. }
  158. //
  159. // func pageCloseHandle() {
  160. // // 子类可重写
  161. // }
  162. //
  163. @objc func pop() {
  164. if navigationController == nil {
  165. dismiss(animated: true, completion: nil)
  166. } else if navigationController?.presentingViewController != nil, navigationController?.viewControllers.count == 1 {
  167. navigationController?.dismiss(animated: true, completion: nil)
  168. } else {
  169. navigationController?.popViewController(animated: true)
  170. }
  171. }
  172. //
  173. // func popToPageName(_ pageName: String) {
  174. // guard let viewControllers = navigationController?.viewControllers else {
  175. // navigationController?.popToRootViewController(animated: true)
  176. // return
  177. // }
  178. // for viewController in viewControllers {
  179. // if NSStringFromClass(type(of: viewController)) == pageName {
  180. // navigationController?.popToViewController(viewController, animated: true)
  181. // return
  182. // }
  183. // }
  184. // navigationController?.popToRootViewController(animated: true)
  185. // }
  186. //
  187. //
  188. // func setPagePopGestureEnabled(_ enabled: Bool) {
  189. // if let navController = navigationController as? TSBaseNavigationC {
  190. // navController.setSpecifiedViewControllerInteractivePopGestureEnabled(enabled)
  191. // }
  192. // }
  193. //
  194. // override var preferredStatusBarStyle: UIStatusBarStyle {
  195. // return TJThemeShared.normalStatusBarStyle
  196. // }
  197. // func setNavBarOverlayContentView(_ isOverlay: Bool) {
  198. // contentView.snp.updateConstraints { make in
  199. // make.top.equalTo(isOverlay ? 0 : kNav_Height)
  200. // }
  201. // }
  202. //
  203. // func setHiddenNavBar(_ hidden: Bool) {
  204. // hiddenNavBar = hidden
  205. // navBarView.isHidden = hidden
  206. // if contentView.superview != nil {
  207. // contentView.snp.updateConstraints { make in
  208. // make.top.equalTo(hidden ? 0 : kNav_Height)
  209. // }
  210. // }
  211. // }
  212. }
  213. extension TSBaseVC {
  214. func setNavBarViewHidden(_ isHidden: Bool) {
  215. navBarContentView.snp.updateConstraints { make in
  216. make.height.equalTo(isHidden ? 0 : k_Nav_Height)
  217. }
  218. contentView.snp.updateConstraints { make in
  219. make.top.equalTo(isHidden ? 0 : k_Nav_Height)
  220. }
  221. }
  222. }