KeyboardMenuView.swift 4.3 KB

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