LNHomeActivityTabItemView.swift 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. //
  2. // LNHomeActivityTabItemView.swift
  3. // Lanu
  4. //
  5. // Created by OneeChan on 2025/11/21.
  6. //
  7. import Foundation
  8. import UIKit
  9. import SnapKit
  10. class LNHomeActivityTabItemView: UIView {
  11. private let cover = UIImageView()
  12. private let nameLabel = UILabel()
  13. private let selectedIc = UIImageView()
  14. private(set) var item: LNGameCategoryItemVO?
  15. override init(frame: CGRect) {
  16. super.init(frame: frame)
  17. setupViews()
  18. }
  19. func update(_ item: LNGameCategoryItemVO) {
  20. cover.sd_setImage(with: URL(string: item.icon))
  21. nameLabel.text = item.name
  22. self.item = item
  23. }
  24. func setSelected(_ selected: Bool) {
  25. let image: UIImage = selected ? .icHomeActivityTabSelected : .icHomeActivityTab
  26. selectedIc.image = image.resizableImage(
  27. withCapInsets: .init(top: 50, left: 50, bottom: 40, right: 50), resizingMode: .stretch
  28. )
  29. nameLabel.font = selected ? .heading_h5 : .body_s
  30. }
  31. func toBeMoreTab() {
  32. selectedIc.snp.remakeConstraints { make in
  33. make.leading.equalToSuperview()
  34. make.verticalEdges.equalToSuperview().inset(4)
  35. make.trailing.equalToSuperview().offset(-3)
  36. }
  37. cover.image = .icHomeGameTabMore
  38. cover.contentMode = .center
  39. cover.snp.remakeConstraints { make in
  40. make.centerY.equalToSuperview()
  41. make.trailing.equalTo(selectedIc)
  42. }
  43. nameLabel.text = .init(key: "A00048")
  44. nameLabel.setContentHuggingPriority(.defaultHigh, for: .horizontal)
  45. nameLabel.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal)
  46. }
  47. required init?(coder: NSCoder) {
  48. fatalError("init(coder:) has not been implemented")
  49. }
  50. }
  51. extension LNHomeActivityTabItemView {
  52. private func setupViews() {
  53. addSubview(selectedIc)
  54. selectedIc.snp.makeConstraints { make in
  55. make.leading.equalToSuperview()
  56. make.centerY.equalToSuperview()
  57. make.height.equalTo(0).priority(.low)
  58. }
  59. addSubview(cover)
  60. cover.snp.makeConstraints { make in
  61. make.verticalEdges.equalToSuperview()
  62. make.trailing.equalToSuperview()
  63. make.width.height.equalTo(58)
  64. make.trailing.equalTo(selectedIc.snp.trailing).offset(17)
  65. }
  66. nameLabel.textAlignment = .center
  67. nameLabel.font = .body_s
  68. nameLabel.textColor = .text_5
  69. nameLabel.setContentHuggingPriority(.defaultLow, for: .horizontal)
  70. nameLabel.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
  71. addSubview(nameLabel)
  72. nameLabel.snp.makeConstraints { make in
  73. make.centerY.equalToSuperview()
  74. make.leading.equalToSuperview().offset(9)
  75. make.trailing.lessThanOrEqualTo(cover.snp.leading).offset(2)
  76. }
  77. }
  78. }