ReaderHive/ReaderHive/Class/Me/V/NRMeHeaderView.swift
2025-12-09 16:53:44 +08:00

147 lines
4.4 KiB
Swift
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// NRMeHeaderView.swift
// ReaderHive
//
// Created by 鸿 on 2025/12/4.
//
import UIKit
import SnapKit
class NRMeHeaderView: UITableViewHeaderFooterView {
// var contentHeight: CGFloat = 200
private lazy var avatarImageView: UIImageView = {
let imageView = NRImageView()
imageView.layer.cornerRadius = 30
imageView.layer.borderWidth = 1
imageView.layer.borderColor = UIColor.white.withAlphaComponent(0.5).cgColor
return imageView
}()
private lazy var nickLabel: UILabel = {
let label = UILabel()
label.font = .font(ofSize: 18, weight: .semibold)
label.textColor = .black
return label
}()
private lazy var idBgView: UIView = {
let view = UIView()
view.backgroundColor = .F_2_EFEE
view.layer.cornerRadius = 9
view.layer.masksToBounds = true
return view
}()
private lazy var idLabel: UILabel = {
let label = UILabel()
label.font = .font(ofSize: 10, weight: .regular)
label.textColor = .black
return label
}()
private lazy var copyButton: UIButton = {
let button = UIButton(type: .custom, primaryAction: UIAction(handler: { [weak self] _ in
guard let self = self else { return }
UIPasteboard.general.string = NRLoginManager.manager.userInfo?.customer_id
NRToast.show(text: "Success")
}))
button.setImage(UIImage(named: "copy_icon_01"), for: .normal)
return button
}()
private lazy var stackView: UIStackView = {
let view = UIStackView()
view.axis = .vertical
view.spacing = 16
return view
}()
private lazy var coinsView: NRMeCoinsContentView = {
let view = NRMeCoinsContentView()
return view
}()
deinit {
NotificationCenter.default.removeObserver(self)
}
override init(reuseIdentifier: String?) {
super.init(reuseIdentifier: reuseIdentifier)
NotificationCenter.default.addObserver(self, selector: #selector(userInfoUpdateNotification), name: NRLoginManager.userInfoUpdateNotification, object: nil)
nr_setupUI()
userInfoUpdateNotification()
stackView.addArrangedSubview(coinsView)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
@objc private func userInfoUpdateNotification() {
guard let userInfo = NRLoginManager.manager.userInfo else { return }
avatarImageView.nr_setImage(userInfo.avator)
nickLabel.text = userInfo.family_name?.isEmpty != false ? "Visitor".localized : userInfo.family_name
idLabel.text = "ID\(userInfo.customer_id ?? "")"
coinsView.userInfo = userInfo
}
}
extension NRMeHeaderView {
private func nr_setupUI() {
contentView.addSubview(avatarImageView)
contentView.addSubview(nickLabel)
contentView.addSubview(idBgView)
idBgView.addSubview(idLabel)
idBgView.addSubview(copyButton)
// contentView.addSubview(stackView)
avatarImageView.snp.makeConstraints { make in
make.left.equalToSuperview()
make.top.equalToSuperview().offset(48)
make.width.height.equalTo(60)
make.bottom.equalToSuperview().offset(-16)
}
nickLabel.snp.makeConstraints { make in
make.left.equalTo(avatarImageView.snp.right).offset(16)
make.top.equalTo(avatarImageView).offset(5)
}
idBgView.snp.makeConstraints { make in
make.left.equalTo(nickLabel)
make.bottom.equalTo(avatarImageView).offset(-5)
make.height.equalTo(18)
}
idLabel.snp.makeConstraints { make in
make.centerY.equalToSuperview()
make.left.equalToSuperview().offset(8)
}
copyButton.snp.makeConstraints { make in
make.top.bottom.equalToSuperview()
make.right.equalToSuperview().offset(-8)
make.left.equalTo(idLabel.snp.right).offset(8)
}
// stackView.snp.makeConstraints { make in
// make.left.right.equalToSuperview()
// make.top.equalTo(avatarImageView.snp.bottom).offset(16)
// make.bottom.equalToSuperview().offset(-16)
// }
}
}