// // HealthStepItemCell.swift // Lookfit // // Created by Sheldon on 2021/9/19. // Copyright © 2021 Sheldon. All rights reserved. // import UIKit class HealthStepItemCell: CollectionViewCell { lazy var titleLabel: UILabel = { let label = UILabel() label.textColor = kHexColor(0x2A2A2A) label.font = SystemMediumFont(18) label.text = MultiLanguageKey.step.localized return label }() lazy var dateLabel: UILabel = { let label = UILabel() label.textColor = kHexColor(0x888888) label.font = SystemRegularFont(12) label.text = DateClass.timestampToStr(Int(Date().timeIntervalSince1970), formatStr: "yyyy/MM/dd") return label }() lazy var bgView: UIView = { let view = UIView() view.gradient(colors: [kHexColor(0xFFB755), kHexColor(0xFF7C36)], locations: nil, autoLaoutFrame: CGRect(x: 0, y: 0, width: kScaleWidth(335), height: kScaleWidth(160))) view.layer.cornerRadius = 10 view.layer.masksToBounds = true return view }() lazy var stepCircleView: CircleView = { let view = CircleView(lineWidth: 8, bottomColor: kHexColor(0xfffff, 0.3), progressColor: kHexColor(0xfffff), type: .doubleLine) return view }() lazy var stepValue: UILabel = { let label = UILabel() label.font = DigitalFont(32) label.textColor = kHexColor(0xffffff) label.text = "0" return label }() lazy var stepUnit: UILabel = { let label = UILabel() label.font = SystemRegularFont(12) label.textColor = kHexColor(0xffffff) label.text = MultiLanguageKey.stepTip.localized return label }() lazy var dataCircleView: CircleView = { let view = CircleView(lineWidth: 2, bottomColor: kHexColor(0xfffff, 0.3), type: .dottedLine) return view }() lazy var stepCaloriesValue: UILabel = { let label = UILabel() label.font = SystemMediumFont(21) label.textColor = kHexColor(0xffffff) label.text = "0" return label }() lazy var stepDistanceValue: UILabel = { let label = UILabel() label.font = SystemMediumFont(21) label.textColor = kHexColor(0xffffff) label.text = "0" return label }() lazy var stepCalories: UILabel = { let label = UILabel() label.font = SystemRegularFont(12) label.textColor = kHexColor(0x8C4B05) label.text = MultiLanguageKey.kcal.localized return label }() lazy var stepDistance: UILabel = { let label = UILabel() label.font = SystemRegularFont(12) label.textColor = kHexColor(0x8C4B05) label.text = MultiLanguageKey.km.localized return label }() // override init(frame: CGRect) { // super.init(frame: frame) // selectionStyle = .none // containerView.addSubview(titleLabel) // containerView.addSubview(dateLabel) // containerView.addSubview(bgView) // bgView.addSubview(stepCircleView) // bgView.addSubview(dataCircleView) // stepCircleView.addSubview(stepValue) // stepCircleView.addSubview(stepUnit) // dataCircleView.addSubview(stepCaloriesValue) // dataCircleView.addSubview(stepDistanceValue) // dataCircleView.addSubview(stepCalories) // dataCircleView.addSubview(stepDistance) // layoutUI() // } // required init?(coder: NSCoder) { // fatalError("init(coder:) has not been implemented") // } override func setUpUI() { containerView.addSubview(titleLabel) containerView.addSubview(dateLabel) containerView.addSubview(bgView) bgView.addSubview(stepCircleView) bgView.addSubview(dataCircleView) stepCircleView.addSubview(stepValue) stepCircleView.addSubview(stepUnit) dataCircleView.addSubview(stepCaloriesValue) dataCircleView.addSubview(stepDistanceValue) dataCircleView.addSubview(stepCalories) dataCircleView.addSubview(stepDistance) } override func layoutUI() { titleLabel.snp.makeConstraints { (make) in make.top.equalTo(kScaleWidth(20)) make.left.equalTo(25) } dateLabel.snp.makeConstraints { (make) in make.bottom.equalTo(titleLabel.snp.bottom) make.right.equalTo(-25) } bgView.snp.makeConstraints { (make) in make.top.equalTo(titleLabel.snp.bottom).offset(10) make.left.equalTo(20) make.right.equalTo(-20) make.height.equalTo(kScaleWidth(160)) } stepCircleView.snp.makeConstraints { (make) in make.centerY.equalToSuperview() make.width.height.equalTo(kScaleWidth(130)) make.left.equalTo(kScaleWidth(28)) } stepValue.snp.makeConstraints { (make) in make.top.equalTo(kScaleWidth(39)) make.centerX.equalToSuperview() } stepUnit.snp.makeConstraints { (make) in make.top.equalTo(stepValue.snp.bottom) make.centerX.equalToSuperview() } dataCircleView.snp.makeConstraints { (make) in make.centerY.equalToSuperview() make.width.height.equalTo(kScaleWidth(130)) make.right.equalTo(-kScaleWidth(28)) } stepCaloriesValue.snp.makeConstraints { (make) in make.top.equalTo(kScaleWidth(34)) make.centerX.equalToSuperview() } stepDistanceValue.snp.makeConstraints { (make) in make.top.equalTo(stepCaloriesValue.snp.bottom).offset(kScaleWidth(4)) make.centerX.equalToSuperview() } stepCalories.snp.makeConstraints { (make) in make.lastBaseline.equalTo(stepCaloriesValue.snp.lastBaseline) make.left.equalTo(stepCaloriesValue.snp.right).offset(5) } stepDistance.snp.makeConstraints { (make) in make.lastBaseline.equalTo(stepDistanceValue.snp.lastBaseline) make.left.equalTo(stepDistanceValue.snp.right).offset(5) } } override func bind(model: ViewModel) { super.bind(model: model) guard let viewModel = model as? StepCellViewModel else { return } viewModel.step .bind(to: stepValue.rx.text) .disposed(by: cellDisposeBag) viewModel.calories .bind(to: stepCaloriesValue.rx.text) .disposed(by: cellDisposeBag) viewModel.distance .bind(to: stepDistanceValue.rx.text) .disposed(by: cellDisposeBag) viewModel.progress .subscribe(onNext: { [weak self] (progress) in self?.stepCircleView.updateProcess(process: Float(progress)) }) .disposed(by: cellDisposeBag) viewModel.dateStr .bind(to: dateLabel.rx.text) .disposed(by: cellDisposeBag) } }