// // HealthStepCell.swift // FireBoltt // // Created by lemo. on 2020/4/6. // Copyright © 2020 Sheldon. All rights reserved. // import UIKit class HealthStepCell: TableViewCell { lazy var fb_titleLabel: UILabel = { let label = UILabel() label.textColor = kHexColor(0x2A2A2A) label.font = SystemMediumFont(18) label.text = MultiLanguageKey_FB.stepFB.localized return label }() lazy var fb_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 fb_bgView: UIView = { let view = UIView() view.gradient(colors: [kHexColor(0x499FFF), kHexColor(0x004EFF)], 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 fb_stepCircleView: CircleView = { let view = CircleView(lineWidth: 8, bottomColor: kHexColor(0xfffff, 0.3), progressColor: kHexColor(0xfffff), type: .doubleLine) return view }() lazy var fb_stepValue: UILabel = { let label = UILabel() label.font = DigitalFont(32) label.textColor = kHexColor(0xffffff) label.text = "0" return label }() lazy var fb_stepUnit: UILabel = { let label = UILabel() label.font = SystemRegularFont(12) label.textColor = kHexColor(0xffffff) label.text = MultiLanguageKey_FB.stepTipFB.localized return label }() lazy var fb_dataCircleView: CircleView = { let view = CircleView(lineWidth: 2, bottomColor: kHexColor(0xfffff, 0.3), type: .dottedLine) return view }() lazy var fb_stepCaloriesValue: UILabel = { let label = UILabel() label.font = SystemMediumFont(21) label.textColor = kHexColor(0xffffff) label.text = "0" return label }() lazy var fb_stepDistanceValue: UILabel = { let label = UILabel() label.font = SystemMediumFont(21) label.textColor = kHexColor(0xffffff) label.text = "0" return label }() lazy var fb_stepCalories: UILabel = { let label = UILabel() label.font = SystemRegularFont(12) label.textColor = kHexColor(0x8C4B05) label.text = MultiLanguageKey_FB.kcalFB.localized return label }() lazy var fb_stepDistance: UILabel = { let label = UILabel() label.font = SystemRegularFont(12) label.textColor = kHexColor(0x8C4B05) label.text = MultiLanguageKey_FB.kmFB.localized return label }() override func makeUI() { super.makeUI() selectionStyle = .none addSubview(fb_titleLabel) addSubview(fb_dateLabel) addSubview(fb_bgView) fb_bgView.addSubview(fb_stepCircleView) fb_bgView.addSubview(fb_dataCircleView) fb_stepCircleView.addSubview(fb_stepValue) fb_stepCircleView.addSubview(fb_stepUnit) fb_dataCircleView.addSubview(fb_stepCaloriesValue) fb_dataCircleView.addSubview(fb_stepDistanceValue) fb_dataCircleView.addSubview(fb_stepCalories) fb_dataCircleView.addSubview(fb_stepDistance) layoutUI() } func layoutUI() { fb_titleLabel.snp.makeConstraints { (make) in make.top.equalTo(kScaleWidth(20)) make.left.equalTo(25) } fb_dateLabel.snp.makeConstraints { (make) in make.bottom.equalTo(fb_titleLabel.snp.bottom) make.right.equalTo(-25) } fb_bgView.snp.makeConstraints { (make) in make.top.equalTo(fb_titleLabel.snp.bottom).offset(10) make.left.equalTo(20) make.right.equalTo(-20) make.height.equalTo(kScaleWidth(160)) } fb_stepCircleView.snp.makeConstraints { (make) in make.centerY.equalToSuperview() make.width.height.equalTo(kScaleWidth(130)) make.left.equalTo(kScaleWidth(28)) } fb_stepValue.snp.makeConstraints { (make) in make.top.equalTo(kScaleWidth(39)) make.centerX.equalToSuperview() } fb_stepUnit.snp.makeConstraints { (make) in make.top.equalTo(fb_stepValue.snp.bottom) make.centerX.equalToSuperview() } fb_dataCircleView.snp.makeConstraints { (make) in make.centerY.equalToSuperview() make.width.height.equalTo(kScaleWidth(130)) make.right.equalTo(-kScaleWidth(28)) } fb_stepCaloriesValue.snp.makeConstraints { (make) in make.top.equalTo(kScaleWidth(34)) make.centerX.equalToSuperview() } fb_stepDistanceValue.snp.makeConstraints { (make) in make.top.equalTo(fb_stepCaloriesValue.snp.bottom).offset(kScaleWidth(4)) make.centerX.equalToSuperview() } fb_stepCalories.snp.makeConstraints { (make) in make.lastBaseline.equalTo(fb_stepCaloriesValue.snp.lastBaseline) make.left.equalTo(fb_stepCaloriesValue.snp.right).offset(5) } fb_stepDistance.snp.makeConstraints { (make) in make.lastBaseline.equalTo(fb_stepDistanceValue.snp.lastBaseline) make.left.equalTo(fb_stepDistanceValue.snp.right).offset(5) } } override func bind(model: ViewModel) { super.bind(model: model) guard let viewModel = model as? StepCellViewModels else { return } viewModel.step .bind(to: fb_stepValue.rx.text) .disposed(by: cellDisposeBag) viewModel.calories .bind(to: fb_stepCaloriesValue.rx.text) .disposed(by: cellDisposeBag) viewModel.distance .bind(to: fb_stepDistanceValue.rx.text) .disposed(by: cellDisposeBag) viewModel.progress .subscribe(onNext: { [weak self] (progress) in self?.fb_stepCircleView.updateProcess(process: Float(progress)) }) .disposed(by: cellDisposeBag) viewModel.dateStr .bind(to: fb_dateLabel.rx.text) .disposed(by: cellDisposeBag) } }