// // SportDetailHeaderView.swift // Lookfit // // Created by lemo. on 2020/4/20. // Copyright © 2020 Sheldon. All rights reserved. // import UIKit class SportDetailHeaderView: UIView { /// 轨迹视图 lazy var sportTrackView: SportTrackView = { let view = SportTrackView(frame: CGRect(x: 0, y: 0, width: kScreenW, height: kScaleHeight(380))) return view }() /// 视图 lazy var sportUserView: SportUserView = { let view = SportUserView() view.backgroundColor = .orange view.userIconImg.image = R.image.icon_header() if let userInfo = UserDefaultsManager.getUserInfo() { view.userNameLabel.text = userInfo.nickname if userInfo.avatarImg != nil { view.userIconImg.image = userInfo.avatarImg } } return view }() lazy var timeImg: UIImageView = { return UIImageView(image: R.image.icon_date()) }() lazy var timeLabel: UILabel = { let label = UILabel() label.textColor = kHexColor(0x888888) label.font = SystemRegularFont(12) return label }() lazy var distanceLabel: UILabel = { let label = UILabel() label.textColor = kHexColor(0x2A2A2A) label.font = UIFont.init(name: "DINAlternate-Bold", size: kScaleWidth(44)) return label }() lazy var distanceUnitLabel: UILabel = { let label = UILabel() label.textColor = kHexColor(0x888888) label.font = SystemRegularFont(12) return label }() override init(frame: CGRect) { super.init(frame: frame) addSubview(sportTrackView) addSubview(sportUserView) addSubview(timeImg) addSubview(timeLabel) addSubview(distanceLabel) addSubview(distanceUnitLabel) layoutUI() } required init?(coder: NSCoder) { fatalError("init(coder:) has not been implemented") } func layoutUI() { sportUserView.snp.makeConstraints { (make) in make.top.equalTo(sportTrackView.snp.bottom) make.width.equalToSuperview() make.height.equalTo(kScaleHeight(80)) } timeLabel.snp.makeConstraints { (make) in make.centerX.equalToSuperview() make.top.equalTo(sportUserView.snp.bottom) } timeImg.snp.makeConstraints { (make) in make.right.equalTo(timeLabel.snp.left).offset(-6) make.height.width.equalTo(8) make.centerY.equalTo(timeLabel.snp.centerY) } distanceLabel.snp.makeConstraints { (make) in make.centerX.equalToSuperview() make.top.equalTo(timeLabel.snp.bottom).offset(10) } distanceUnitLabel.snp.makeConstraints { (make) in make.left.equalTo(distanceLabel.snp.right).offset(10) make.firstBaseline.equalTo(distanceLabel.snp.firstBaseline) } } } // MARK: - RxExtension extension Reactive where Base: SportDetailHeaderView { // 轨迹更新 func trajectory() -> Binder<(Bool, [CLLocationCoordinate2D])> { return Binder(self.base, binding: { (view, arg1) in let (hidden, coordinates) = arg1 if hidden == false { view.sportTrackView.drawTrajectory(coordinates: coordinates) }else { view.sportTrackView.removeFromSuperview() view.frame.height = kScaleHeight(193) view.sportUserView.snp.remakeConstraints { (make) in make.top.equalTo(15) make.width.equalToSuperview() make.height.equalTo(kScaleHeight(80)) } } }) } }