// // ServerListTableViewCell.swift // Bark // // Created by huangfeng on 2022/4/1. // Copyright © 2022 Fin. All rights reserved. // import Material import UIKit class ServerListTableViewCell: BaseTableViewCell { let backgroundPanel: UIView = { let view = UIView() view.layer.cornerRadius = 3 view.clipsToBounds = true view.backgroundColor = BKColor.background.secondary view.layer.cornerRadius = 25 view.clipsToBounds = true view.layer.borderColor = BKColor.grey.lighten3.cgColor view.layer.borderWidth = 1 return view }() let addressLabel: UILabel = { let label = UILabel() label.font = RobotoFont.medium(with: 14) label.textColor = BKColor.grey.darken4 label.numberOfLines = 0 return label }() let keyLabel: UILabel = { let label = UILabel() label.font = RobotoFont.regular(with: 12) label.textColor = BKColor.grey.darken4 label.numberOfLines = 0 return label }() let stateImageView: UIImageView = { let imageView = UIImageView() imageView.contentMode = .scaleAspectFit imageView.layer.cornerRadius = 15 imageView.clipsToBounds = true return imageView }() var state: Bool = false { didSet { if state { stateImageView.image = UIImage(named: "online") } else { stateImageView.image = UIImage(named: "offline") } } } override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { super.init(style: style, reuseIdentifier: reuseIdentifier) self.selectionStyle = .none self.backgroundColor = BKColor.background.primary addSubview(backgroundPanel) addSubview(stateImageView) addSubview(addressLabel) addSubview(keyLabel) backgroundPanel.snp.makeConstraints { make in make.left.equalToSuperview().offset(18) make.right.equalToSuperview().offset(-18) make.top.equalToSuperview().offset(5) make.bottom.equalToSuperview().offset(-5) make.height.equalTo(50) } stateImageView.snp.makeConstraints { make in make.centerY.equalTo(backgroundPanel) make.left.equalTo(backgroundPanel).offset(13) make.width.height.equalTo(30) } addressLabel.snp.makeConstraints { make in make.left.equalTo(stateImageView.snp.right).offset(8) make.top.equalTo(backgroundPanel).offset(8) make.right.equalTo(backgroundPanel).offset(-8) } keyLabel.snp.makeConstraints { make in make.top.equalTo(addressLabel.snp.bottom).offset(1) make.left.right.equalTo(addressLabel) } } @available(*, unavailable) required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } override func bindViewModel(model: ServerListTableViewCellViewModel) { super.bindViewModel(model: model) model.address .bind(to: addressLabel.rx.text) .disposed(by: rx.reuseBag) model.key .bind(to: keyLabel.rx.text) .disposed(by: rx.reuseBag) model.state .subscribe { state in self.state = state } onError: { _ in } .disposed(by: rx.reuseBag) } }