123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- //
- // ServerListTableViewCell.swift
- // Bark
- //
- // Created by huangfeng on 2022/4/1.
- // Copyright © 2022 Fin. All rights reserved.
- //
- import Material
- import UIKit
- class ServerListTableViewCell: BaseTableViewCell<ServerListTableViewCellViewModel> {
- 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)
- }
- }
|