You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
119 lines
3.7 KiB
119 lines
3.7 KiB
![]()
2 years ago
|
//
|
||
|
// 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))
|
||
|
}
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|