Bark/View/ServerListTableViewCell.swift
2022-04-07 16:04:34 +08:00

118 lines
3.5 KiB
Swift

//
// 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)
}
}