// // SPMineHeaderView.swift // Thimra // // Created by Overseas on 2025/4/19. // import UIKit class SPMineHeaderView: UIView { var contentHeight: CGFloat { var height: CGFloat = kSPStatusbarHeight + 108 if playHistoryArr?.count ?? 0 > 0 { height += playHistoryView.contentHeight height += 10 } return height } var userInfo: SPUserInfo? { didSet { avatarImageView.sp_setImage(url: userInfo?.avator, placeholder: UIImage(named: "avatar_image_01")) if let name = userInfo?.family_name, name.count > 0 { nicknameLabel.text = name } else { nicknameLabel.text = "Vistor" } idLabel.text = "ID \(userInfo?.customer_id ?? "")" } } var playHistoryArr: [SPShortModel]? { didSet { stackView.removeAllArrangedSubview() if let arr = playHistoryArr, arr.count > 0 { stackView.addArrangedSubview(playHistoryView) } playHistoryView.dataArr = playHistoryArr } } //MARK: UI属性 private lazy var avatarImageView: SPImageView = { let imageView = SPImageView(image: UIImage(named: "avatar_image_01")) imageView.layer.cornerRadius = 31 imageView.layer.masksToBounds = true imageView.layer.borderColor = UIColor.colorFFFFFF(alpha: 0.3).cgColor imageView.layer.borderWidth = 2 return imageView }() private lazy var nicknameLabel: UILabel = { let label = UILabel() label.font = .fontMedium(ofSize: 16) label.textColor = .colorFFFFFF() return label }() private lazy var idLabel: UILabel = { let label = UILabel() label.font = .fontRegular(ofSize: 14) label.textColor = .color8B6C6C() return label }() private lazy var copyButton: UIButton = { let button = UIButton(type: .custom) button.setTitle("Copy".localized, for: .normal) button.setTitleColor(.colorFFFFFF(), for: .normal) button.titleLabel?.font = .fontRegular(ofSize: 12) button.setBackgroundImage(UIImage(color: .color58484B(alpha: 0.56)), for: .normal) button.layer.cornerRadius = 2 button.layer.masksToBounds = true button.addTarget(self, action: #selector(handleCopyButton), for: .touchUpInside) return button }() private lazy var stackView: UIStackView = { let view = UIStackView() view.axis = .vertical return view }() private lazy var playHistoryView: SPMinePlayHistoryView = { let view = SPMinePlayHistoryView() return view }() override init(frame: CGRect) { super.init(frame: frame) _setupUI() } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } @objc private func handleCopyButton() { SPAPPTool.copy(text: userInfo?.customer_id) } } extension SPMineHeaderView { private func _setupUI() { addSubview(avatarImageView) addSubview(nicknameLabel) addSubview(idLabel) addSubview(copyButton) addSubview(stackView) avatarImageView.snp.makeConstraints { make in make.left.equalToSuperview().offset(16) make.top.equalToSuperview().offset(kSPStatusbarHeight + 22) make.width.height.equalTo(62) } nicknameLabel.snp.makeConstraints { make in make.left.equalTo(avatarImageView.snp.right).offset(15) make.top.equalTo(avatarImageView).offset(9) } idLabel.snp.makeConstraints { make in make.left.equalTo(nicknameLabel) make.top.equalTo(nicknameLabel.snp.bottom).offset(6) } let copyWidth = (copyButton.currentTitle?.size(font: copyButton.titleLabel?.font ?? .fontRegular(ofSize: 12)).width ?? 0) + 8 copyButton.snp.makeConstraints { make in make.centerY.equalTo(idLabel) make.left.equalTo(idLabel.snp.right).offset(6) make.height.equalTo(18) make.width.equalTo(copyWidth) } stackView.snp.makeConstraints { make in make.left.right.equalToSuperview() make.top.equalToSuperview().offset(kSPStatusbarHeight + 108) } } }