LNFakeNaviBar.swift 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. //
  2. // LNFakeNaviBar.swift
  3. // Lanu
  4. //
  5. // Created by OneeChan on 2026/1/15.
  6. //
  7. import Foundation
  8. import UIKit
  9. import SnapKit
  10. class LNFakeNaviBar: UIView {
  11. private(set) var backButton: UIButton?
  12. let actionView = UIView()
  13. private var rightMenuView: UIView?
  14. override init(frame: CGRect) {
  15. super.init(frame: frame)
  16. clipsToBounds = false
  17. addSubview(actionView)
  18. actionView.snp.makeConstraints { make in
  19. make.horizontalEdges.equalToSuperview()
  20. make.bottom.equalToSuperview()
  21. make.height.equalTo(UIView.navigationBarHeight)
  22. make.top.equalToSuperview().offset(UIView.statusBarHeight)
  23. }
  24. }
  25. @discardableResult
  26. func showBackButton(_ handler: (() -> Void)? = nil) -> UIButton {
  27. let backButton = UIButton.backButton()
  28. backButton.addAction(UIAction(handler: { [weak self] _ in
  29. guard let self else { return }
  30. if let handler {
  31. handler()
  32. } else {
  33. navigationController?.popViewController(animated: true)
  34. }
  35. }), for: .touchUpInside)
  36. actionView.addSubview(backButton)
  37. backButton.snp.makeConstraints { make in
  38. make.leading.equalToSuperview()
  39. make.centerY.equalToSuperview()
  40. make.width.height.equalTo(44)
  41. }
  42. self.backButton = backButton
  43. return backButton
  44. }
  45. func setRightMenu(_ view: UIView) {
  46. rightMenuView?.removeFromSuperview()
  47. actionView.addSubview(view)
  48. view.snp.makeConstraints { make in
  49. make.centerY.equalToSuperview()
  50. make.trailing.equalToSuperview().offset(-16)
  51. make.width.height.equalTo(44)
  52. }
  53. rightMenuView = view
  54. }
  55. required init?(coder: NSCoder) {
  56. fatalError("init(coder:) has not been implemented")
  57. }
  58. }