| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- //
- // LNUserRelationItemCell.swift
- // Lanu
- //
- // Created by OneeChan on 2025/12/19.
- //
- import Foundation
- import UIKit
- import SnapKit
- class LNUserRelationItemCell: UITableViewCell {
- private let avatar = UIImageView()
- private let nameLabel = UILabel()
- private let genderView = LNGenderView()
- private let followLabel = UILabel()
- private let followButton = UIButton()
-
- private var curItem: LNRelationUserVO?
-
- override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
- super.init(style: style, reuseIdentifier: reuseIdentifier)
-
- setupViews()
-
- LNEventDeliver.addObserver(self)
- }
-
- func update(_ item: LNRelationUserVO) {
- avatar.showAvatar(item.avatar)
- nameLabel.text = item.nickname
- genderView.update(item.gender, item.age)
-
- curItem = item
-
- updateFollowButton()
- }
-
- required init?(coder: NSCoder) {
- fatalError("init(coder:) has not been implemented")
- }
- }
- extension LNUserRelationItemCell {
- @objc
- private func handleFollowClick() {
- guard let curItem else { return }
- if curItem.relateion.contains(.followed) == true {
- LNCommonAlertView.showUnfollowAlert(uid: curItem.userNo)
- } else {
- LNRelationManager.shared.operateFollow(uid: curItem.userNo, follow: true, handler: nil)
- }
- }
- }
- extension LNUserRelationItemCell: LNRelationManagerNotify {
- func onUserRelationChanged(uid: String, relation: LNUserRelationShip) {
- guard curItem?.userNo == uid else { return }
- curItem?.relateion = relation
- updateFollowButton()
- }
- }
- extension LNUserRelationItemCell {
- private func updateFollowButton() {
- if curItem?.relateion.contains(.followed) == true {
- if curItem?.relateion.contains(.fans) == true {
- followLabel.isHidden = true
- followLabel.text = nil
- followButton.setBackgroundImage(nil, for: .normal)
- followButton.setImage(.icRelationFriend.withRenderingMode(.alwaysTemplate), for: .normal)
- followButton.tintColor = .text_2
- } else {
- followLabel.text = .init(key: "A00235")
- followLabel.isHidden = false
- followLabel.font = .body_xs
- followLabel.textColor = .text_2
- followButton.setBackgroundImage(nil, for: .normal)
- followButton.setImage(nil, for: .normal)
- }
- } else {
- if curItem?.relateion.contains(.fans) == true {
- followLabel.isHidden = true
- followLabel.text = nil
- followButton.setBackgroundImage(.primary_7, for: .normal)
- followButton.setImage(.icRelationFriend.withRenderingMode(.alwaysTemplate), for: .normal)
- followButton.tintColor = .text_1
- } else {
- followLabel.text = .init(key: "A00225")
- followLabel.isHidden = false
- followLabel.font = .heading_h5
- followLabel.textColor = .text_1
- followButton.setBackgroundImage(.primary_7, for: .normal)
- followButton.setImage(nil, for: .normal)
- }
- }
- }
-
- private func setupViews() {
- avatar.layer.cornerRadius = 20
- avatar.clipsToBounds = true
- contentView.addSubview(avatar)
- avatar.snp.makeConstraints { make in
- make.leading.equalToSuperview().offset(21)
- make.verticalEdges.equalToSuperview().inset(15)
- make.width.height.equalTo(40)
- }
-
- nameLabel.font = .heading_h4
- nameLabel.textColor = .text_5
- contentView.addSubview(nameLabel)
- nameLabel.snp.makeConstraints { make in
- make.centerY.equalToSuperview()
- make.leading.equalTo(avatar.snp.trailing).offset(12)
- }
-
- followButton.layer.cornerRadius = 11
- followButton.backgroundColor = .fill_2
- followButton.clipsToBounds = true
- followButton.addTarget(self, action: #selector(handleFollowClick), for: .touchUpInside)
- contentView.addSubview(followButton)
- followButton.snp.makeConstraints { make in
- make.centerY.equalToSuperview()
- make.trailing.equalToSuperview().offset(-16)
- make.height.equalTo(22)
- make.width.greaterThanOrEqualTo(48)
- }
-
- followLabel.font = .body_xs
- followLabel.text = .init(key: "A00235")
- followLabel.textColor = .text_2
- followButton.addSubview(followLabel)
- followLabel.snp.makeConstraints { make in
- make.center.equalToSuperview()
- make.leading.equalToSuperview().offset(5)
- }
-
- contentView.addSubview(genderView)
- genderView.snp.makeConstraints { make in
- make.centerY.equalToSuperview()
- make.leading.equalTo(nameLabel.snp.trailing).offset(4)
- make.trailing.lessThanOrEqualTo(followButton.snp.leading).offset(-12)
- }
- }
- }
|