KeyboardMenuView.swift 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. //
  2. // KeyboardMenuView.swift
  3. // AiKeyboard
  4. //
  5. // Created by Destiny on 2025/4/28.
  6. //
  7. import UIKit
  8. protocol KeyboardMenuViewDelegate: NSObjectProtocol {
  9. func menuBackBtnClickAction()
  10. }
  11. class KeyboardMenuView: UIView {
  12. struct UX {
  13. static let btnWidth = (KeyboardConst.kb_kScreenW - 36.0) / 2.0
  14. static let btnHeight = 74.0
  15. }
  16. weak var delegate: KeyboardMenuViewDelegate?
  17. lazy var backBtn: UIButton = {
  18. let btn = UIButton()
  19. btn.setImage(UIImage(named: "keyboard_back_btn"), for: .normal)
  20. btn.layer.shadowOffset = CGSize(width: 0, height: 0)
  21. btn.layer.shadowColor = UIColor.hexStringColor(hexString: "#000000", alpha: 0.12).cgColor
  22. btn.layer.shadowRadius = 6.1
  23. btn.addTarget(self, action: #selector(backBtnClickAction), for: .touchUpInside)
  24. return btn
  25. }()
  26. lazy var diyCharacterBtn: UIButton = {
  27. let btn = UIButton(frame: CGRect(x: 0, y: 0, width: UX.btnWidth, height: UX.btnHeight))
  28. btn.backgroundColor = .white
  29. btn.layer.cornerRadius = 14
  30. btn.setTitle("定制人设", for: .normal)
  31. btn.setTitleColor(.hexStringColor(hexString: "#000000", alpha: 0.8), for: .normal)
  32. btn.titleLabel?.font = .systemFont(ofSize: 13, weight: .medium)
  33. btn.titleLabel?.textAlignment = .center
  34. btn.setImage(UIImage(named: "keyboard_menu_diy"), for: .normal)
  35. btn.setImageTitleLayout(.imgTop, spacing: 8)
  36. return btn
  37. }()
  38. lazy var marketBtn: UIButton = {
  39. let btn = UIButton(frame: CGRect(x: 0, y: 0, width: UX.btnWidth, height: UX.btnHeight))
  40. btn.backgroundColor = .white
  41. btn.layer.cornerRadius = 14
  42. btn.setTitle("人设市场", for: .normal)
  43. btn.setTitleColor(.hexStringColor(hexString: "#000000", alpha: 0.8), for: .normal)
  44. btn.titleLabel?.font = .systemFont(ofSize: 13, weight: .medium)
  45. btn.titleLabel?.textAlignment = .center
  46. btn.setImage(UIImage(named: "keyboard_menu_market"), for: .normal)
  47. btn.setImageTitleLayout(.imgTop, spacing: 8)
  48. return btn
  49. }()
  50. lazy var vipBtn: UIButton = {
  51. let btn = UIButton(frame: CGRect(x: 0, y: 0, width: UX.btnWidth, height: UX.btnHeight))
  52. btn.backgroundColor = .white
  53. btn.layer.cornerRadius = 14
  54. btn.setTitle("解锁会员", for: .normal)
  55. btn.setTitleColor(.hexStringColor(hexString: "#000000", alpha: 0.8), for: .normal)
  56. btn.titleLabel?.font = .systemFont(ofSize: 13, weight: .medium)
  57. btn.titleLabel?.textAlignment = .center
  58. btn.setImage(UIImage(named: "keyboard_menu_vip"), for: .normal)
  59. btn.setImageTitleLayout(.imgTop, spacing: 8)
  60. return btn
  61. }()
  62. override init(frame: CGRect) {
  63. super.init(frame: frame)
  64. initUI()
  65. }
  66. required init?(coder: NSCoder) {
  67. fatalError("init(coder:) has not been implemented")
  68. }
  69. }
  70. extension KeyboardMenuView {
  71. @objc func backBtnClickAction() {
  72. self.removeFromSuperview()
  73. delegate?.menuBackBtnClickAction()
  74. }
  75. }
  76. extension KeyboardMenuView {
  77. func initUI() {
  78. self.addSubview(backBtn)
  79. backBtn.snp.makeConstraints { make in
  80. make.size.equalTo(CGSize(width: 32, height: 32))
  81. make.left.equalTo(12)
  82. make.top.equalTo(16)
  83. }
  84. self.addSubview(diyCharacterBtn)
  85. diyCharacterBtn.snp.makeConstraints { make in
  86. make.size.equalTo(CGSize(width: UX.btnWidth, height: UX.btnHeight))
  87. make.top.equalTo(60)
  88. make.left.equalTo(12)
  89. }
  90. self.addSubview(marketBtn)
  91. marketBtn.snp.makeConstraints { make in
  92. make.size.equalTo(CGSize(width: UX.btnWidth, height: UX.btnHeight))
  93. make.top.equalTo(60)
  94. make.right.equalTo(-12)
  95. }
  96. self.addSubview(vipBtn)
  97. vipBtn.snp.makeConstraints { make in
  98. make.size.equalTo(CGSize(width: UX.btnWidth, height: UX.btnHeight))
  99. make.top.equalTo(diyCharacterBtn.snp.bottom).offset(12)
  100. make.left.equalTo(12)
  101. }
  102. }
  103. }