From: liangzhenying <867174124@qq.com> Date: Tue, 10 Feb 2026 09:43:33 +0000 (+0800) Subject: 运动UI修改 X-Git-Tag: 1.0.4~7 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=607eb2d0f1e3c9f0804cacc77a07490ca8808c60;p=mirrors%2FShenYin.git 运动UI修改 --- diff --git a/ShenYin/ShenYin.xcodeproj/project.pbxproj b/ShenYin/ShenYin.xcodeproj/project.pbxproj index 4dab2b8..1a812d7 100644 --- a/ShenYin/ShenYin.xcodeproj/project.pbxproj +++ b/ShenYin/ShenYin.xcodeproj/project.pbxproj @@ -513,8 +513,15 @@ UI/Sport/Sport/Set/SportSetCell.swift, UI/Sport/Sport/Set/SportSetModel.swift, UI/Sport/Sport/Set/SportSetVC.swift, + UI/Sport/Sport/SportDetail/CadenceView.swift, + UI/Sport/Sport/SportDetail/ElevationView.swift, + UI/Sport/Sport/SportDetail/FeelView.swift, + UI/Sport/Sport/SportDetail/PacePerView.swift, + UI/Sport/Sport/SportDetail/PaceView.swift, UI/Sport/Sport/SportDetail/SportDetailBoard.swift, UI/Sport/Sport/SportDetail/SportDetailVC.swift, + UI/Sport/Sport/SportDetail/StepRateView.swift, + UI/Sport/Sport/SportDetail/StrideLengthView.swift, UI/Sport/Sport/Sporting/DetailBoard.swift, UI/Sport/Sport/Sporting/SimpleBoard.swift, UI/Sport/Sport/Sporting/SportingVC.swift, @@ -630,8 +637,15 @@ UI/Sport/Sport/Set/SportSetCell.swift, UI/Sport/Sport/Set/SportSetModel.swift, UI/Sport/Sport/Set/SportSetVC.swift, + UI/Sport/Sport/SportDetail/CadenceView.swift, + UI/Sport/Sport/SportDetail/ElevationView.swift, + UI/Sport/Sport/SportDetail/FeelView.swift, + UI/Sport/Sport/SportDetail/PacePerView.swift, + UI/Sport/Sport/SportDetail/PaceView.swift, UI/Sport/Sport/SportDetail/SportDetailBoard.swift, UI/Sport/Sport/SportDetail/SportDetailVC.swift, + UI/Sport/Sport/SportDetail/StepRateView.swift, + UI/Sport/Sport/SportDetail/StrideLengthView.swift, UI/Sport/Sport/Sporting/DetailBoard.swift, UI/Sport/Sport/Sporting/SimpleBoard.swift, UI/Sport/Sport/Sporting/SportingVC.swift, diff --git a/ShenYin/ShenYin/Assets.xcassets/sport/btn_continue.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/sport/btn_continue.imageset/Contents.json new file mode 100644 index 0000000..eef4940 --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/sport/btn_continue.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Slice 160@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Slice 160@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShenYin/ShenYin/Assets.xcassets/sport/btn_continue.imageset/Slice 160@2x.png b/ShenYin/ShenYin/Assets.xcassets/sport/btn_continue.imageset/Slice 160@2x.png new file mode 100644 index 0000000..8140be6 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/sport/btn_continue.imageset/Slice 160@2x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/sport/btn_continue.imageset/Slice 160@3x.png b/ShenYin/ShenYin/Assets.xcassets/sport/btn_continue.imageset/Slice 160@3x.png new file mode 100644 index 0000000..0dbcf4a Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/sport/btn_continue.imageset/Slice 160@3x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/sport/btn_locked.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/sport/btn_locked.imageset/Contents.json new file mode 100644 index 0000000..9922029 --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/sport/btn_locked.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Slice 158@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Slice 158@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShenYin/ShenYin/Assets.xcassets/sport/btn_locked.imageset/Slice 158@2x.png b/ShenYin/ShenYin/Assets.xcassets/sport/btn_locked.imageset/Slice 158@2x.png new file mode 100644 index 0000000..7767673 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/sport/btn_locked.imageset/Slice 158@2x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/sport/btn_locked.imageset/Slice 158@3x.png b/ShenYin/ShenYin/Assets.xcassets/sport/btn_locked.imageset/Slice 158@3x.png new file mode 100644 index 0000000..e445020 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/sport/btn_locked.imageset/Slice 158@3x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/sport/btn_stop.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/sport/btn_stop.imageset/Contents.json new file mode 100644 index 0000000..d1c5245 --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/sport/btn_stop.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Slice 161@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Slice 161@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShenYin/ShenYin/Assets.xcassets/sport/btn_stop.imageset/Slice 161@2x.png b/ShenYin/ShenYin/Assets.xcassets/sport/btn_stop.imageset/Slice 161@2x.png new file mode 100644 index 0000000..29d7531 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/sport/btn_stop.imageset/Slice 161@2x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/sport/btn_stop.imageset/Slice 161@3x.png b/ShenYin/ShenYin/Assets.xcassets/sport/btn_stop.imageset/Slice 161@3x.png new file mode 100644 index 0000000..a3ae21d Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/sport/btn_stop.imageset/Slice 161@3x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/sport/sport_feel.imageset/Contents.json b/ShenYin/ShenYin/Assets.xcassets/sport/sport_feel.imageset/Contents.json new file mode 100644 index 0000000..3978697 --- /dev/null +++ b/ShenYin/ShenYin/Assets.xcassets/sport/sport_feel.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "Slice 170@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "Slice 170@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/ShenYin/ShenYin/Assets.xcassets/sport/sport_feel.imageset/Slice 170@2x.png b/ShenYin/ShenYin/Assets.xcassets/sport/sport_feel.imageset/Slice 170@2x.png new file mode 100644 index 0000000..67a7496 Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/sport/sport_feel.imageset/Slice 170@2x.png differ diff --git a/ShenYin/ShenYin/Assets.xcassets/sport/sport_feel.imageset/Slice 170@3x.png b/ShenYin/ShenYin/Assets.xcassets/sport/sport_feel.imageset/Slice 170@3x.png new file mode 100644 index 0000000..f47188c Binary files /dev/null and b/ShenYin/ShenYin/Assets.xcassets/sport/sport_feel.imageset/Slice 170@3x.png differ diff --git a/ShenYin/ShenYin/Launch/SceneDelegate.swift b/ShenYin/ShenYin/Launch/SceneDelegate.swift index 9532784..fd80973 100644 --- a/ShenYin/ShenYin/Launch/SceneDelegate.swift +++ b/ShenYin/ShenYin/Launch/SceneDelegate.swift @@ -17,9 +17,9 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate { guard let _ = (scene as? UIWindowScene) else { return } App.shared.window = window -// AppLaunch.start() - MapManager.shared.setupSdk() - window?.rootViewController = UINavigationController(rootViewController: CreateGroupVC()) + AppLaunch.start() +// MapManager.shared.setupSdk() +// window?.rootViewController = UINavigationController(rootViewController: CreateGroupVC()) // } diff --git a/ShenYin/ShenYin/UI/Base/BaseTC.swift b/ShenYin/ShenYin/UI/Base/BaseTC.swift index c2d9684..f029637 100644 --- a/ShenYin/ShenYin/UI/Base/BaseTC.swift +++ b/ShenYin/ShenYin/UI/Base/BaseTC.swift @@ -20,8 +20,8 @@ class BaseTC:UITabBarController{ func setupUI(){ if CCDevice.isJoy{ - let homeVC = HomeDeviceVC() -// let homeVC = SportHomeVC() +// let homeVC = HomeDeviceVC() + let homeVC = SportHomeVC() let modeVC = ModeVC() let sleepVC = SleepVC() diff --git a/ShenYin/ShenYin/UI/Sport/Sport/Ready/Navbar.swift b/ShenYin/ShenYin/UI/Sport/Sport/Ready/Navbar.swift index 0cd46c1..41b2620 100644 --- a/ShenYin/ShenYin/UI/Sport/Sport/Ready/Navbar.swift +++ b/ShenYin/ShenYin/UI/Sport/Sport/Ready/Navbar.swift @@ -9,14 +9,18 @@ import UIKit extension ReadyVC{ class Navbar: BaseView { - + let backItem = BackItem() let icon = UIImageView() let groupBtn = UIButton() let setBtn = UIButton() override func setupViews() { - // backgroundColor = .red - addSubviews([icon,groupBtn,setBtn]) + backgroundColor = .color(.bgColor) + addSubviews([backItem,icon,groupBtn,setBtn]) + backItem.do { v in + v.titleLabel.text = SportManager.shared.sortType.name + v.yc.addTap(target: self, action: #selector(backAction)) + } icon.do { v in v.image = UIImage(named: "sport_ai") } @@ -51,14 +55,52 @@ extension ReadyVC{ make.centerY.equalTo(icon) make.right.equalTo(setBtn.snp.left).offset(-10) } + backItem.snp.makeConstraints { make in + make.left.equalToSuperview() + make.centerY.equalTo(icon) + make.height.equalTo(32) + make.width.equalTo(100) + } + } + @objc func backAction(){ + App.shared.popPage() } - @objc func groupAction(){ App.shared.goToPage(SportSetVC()) } @objc func setAction(){ App.shared.goToPage(SportSetVC()) } + + class BackItem: BaseView { + let icon = UIImageView() + let titleLabel = UILabel() + + override func setupViews() { + addSubviews([titleLabel,icon]) + icon.do { v in + v.image = UIImage(named: "arrow_back") + } + titleLabel.do { v in + v.textColor = .color(.first) + v.font = .bold(16) + } + backgroundColor = .white + } + + override func setupLayout() { + icon.snp.makeConstraints { make in + make.width.equalTo(10) + make.height.equalTo(19) + make.left.equalToSuperview().inset(18) + make.centerY.equalToSuperview() + } + titleLabel.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.left.equalToSuperview().inset(42) + } + } + } } diff --git a/ShenYin/ShenYin/UI/Sport/Sport/Ready/ReadyHeader.swift b/ShenYin/ShenYin/UI/Sport/Sport/Ready/ReadyHeader.swift index 3ca1809..4b8fbbd 100644 --- a/ShenYin/ShenYin/UI/Sport/Sport/Ready/ReadyHeader.swift +++ b/ShenYin/ShenYin/UI/Sport/Sport/Ready/ReadyHeader.swift @@ -7,6 +7,7 @@ extension ReadyVC{ class ReadyHeader: BaseView { + let typeLabel = UILabel() let totalLabel = UILabel() let unitLabel = UILabel() @@ -15,10 +16,11 @@ extension ReadyVC{ override func setupViews() { addSubviews([typeLabel,totalLabel,unitLabel,aiBtn]) + typeLabel.do { v in v.textColor = .color(.secondary) v.font = .regular(12) - v.text = "积累跑步距离" + v.text = SportManager.shared.sortType.readyText v.textAlignment = .left } totalLabel.do { v in @@ -99,7 +101,7 @@ extension ReadyVC{ } } } - + } } diff --git a/ShenYin/ShenYin/UI/Sport/Sport/Root/SportTypeView.swift b/ShenYin/ShenYin/UI/Sport/Sport/Root/SportTypeView.swift index 67a3834..deef027 100644 --- a/ShenYin/ShenYin/UI/Sport/Sport/Root/SportTypeView.swift +++ b/ShenYin/ShenYin/UI/Sport/Sport/Root/SportTypeView.swift @@ -31,6 +31,16 @@ enum SportType:String,HandyJSONEnum{ return "sport_walk" } } + var readyText:String{ + switch self { + case .run: + return "累积跑步距离".l10n + case .ride: + return "累积骑行距离".l10n + case .walk: + return "累积健走距离".l10n + } + } static var all:[SportType] = [.run,.ride,.walk] } @@ -77,13 +87,16 @@ class SportTypeView: BaseView { } } @objc func runAction(){ + SportManager.shared.sortType = .run App.shared.goToPage(ReadyVC()) } @objc func rideAction(){ - + SportManager.shared.sortType = .ride + App.shared.goToPage(ReadyVC()) } @objc func walkAction(){ - + SportManager.shared.sortType = .walk + App.shared.goToPage(ReadyVC()) } } diff --git a/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/CadenceView.swift b/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/CadenceView.swift new file mode 100644 index 0000000..8e41a47 --- /dev/null +++ b/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/CadenceView.swift @@ -0,0 +1,7 @@ +// +// CadenceView.swift +// ShenYin +// +// Created by liangshi on 2026/2/10. +// + diff --git a/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/ElevationView.swift b/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/ElevationView.swift new file mode 100644 index 0000000..d323eea --- /dev/null +++ b/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/ElevationView.swift @@ -0,0 +1,7 @@ +// +// elevationView.swift +// ShenYin +// +// Created by liangshi on 2026/2/10. +// + diff --git a/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/FeelView.swift b/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/FeelView.swift new file mode 100644 index 0000000..0d7a8ed --- /dev/null +++ b/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/FeelView.swift @@ -0,0 +1,57 @@ +// +// FeelView.swift +// ShenYin +// +// Created by liangshi on 2026/2/10. +// + +class FeelView: BaseView { + let header = SportDetailTitleView() + + override func setupViews() { + backgroundColor = .white + addSubviews([header]) + header.do { v in + v.titleLabel.text = "运动感受".l10n + v.icon.image = UIImage(named: "sport_feel") + } + } + + override func setupLayout() { + header.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.height.equalTo(55) + make.left.right.equalToSuperview() + } + + } +} +class SportDetailTitleView: BaseView { + let icon = UIImageView() + let titleLabel = UILabel() + + override func setupViews() { + addSubviews([icon,titleLabel]) + + titleLabel.do { v in + v.textColor = .color(.first) + v.font = .medium(16) + } + icon.do { v in + v.image = UIImage(named: "") + } + } + + override func setupLayout() { + + titleLabel.snp.makeConstraints { make in + make.centerY.equalToSuperview() + make.left.equalToSuperview().inset(48) + } + icon.snp.makeConstraints { make in + make.size.equalTo(24) + make.centerY.equalToSuperview() + make.left.equalToSuperview().inset(18) + } + } +} diff --git a/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/PacePerView.swift b/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/PacePerView.swift new file mode 100644 index 0000000..7945489 --- /dev/null +++ b/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/PacePerView.swift @@ -0,0 +1,7 @@ +// +// PacePerView.swift +// ShenYin +// +// Created by liangshi on 2026/2/10. +// + diff --git a/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/PaceView.swift b/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/PaceView.swift new file mode 100644 index 0000000..9c69b83 --- /dev/null +++ b/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/PaceView.swift @@ -0,0 +1,7 @@ +// +// SpeepView.swift +// ShenYin +// +// Created by liangshi on 2026/2/10. +// + diff --git a/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/SportDetailBoard.swift b/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/SportDetailBoard.swift index 31f67d9..fc5eaa7 100644 --- a/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/SportDetailBoard.swift +++ b/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/SportDetailBoard.swift @@ -16,11 +16,10 @@ extension SportDetailVC{ let speedItem = LabelItem() let calorieItem = LabelItem() let stepItem = LabelItem() - let okBtn = UIButton(type: .custom) override func setupViews() { backgroundColor = .white - addSubviews([topIcon,header,distanceItem,durationItem,speedItem,calorieItem,stepItem,okBtn]) + addSubviews([topIcon,header,distanceItem,durationItem,speedItem,calorieItem,stepItem]) topIcon.do { v in v.backgroundColor = .color(.secondary) v.yc.setCornerRadius(2) @@ -45,10 +44,7 @@ extension SportDetailVC{ v.titleLabel.text = "1200" v.detailLabel.text = "步数".l10n } - okBtn.do { v in - v.setImage(UIImage(named: "btn_pause"), for: .normal) - v.addTarget(self, action: #selector(okAction), for: .touchUpInside) - } + } override func setupLayout() { @@ -88,11 +84,6 @@ extension SportDetailVC{ make.top.equalTo(calorieItem.snp.top) make.height.equalTo(50) } - okBtn.snp.makeConstraints { make in - make.centerX.equalToSuperview() - make.bottom.equalToSuperview().inset(50) - make.size.equalTo(90) - } } @objc func okAction(){ diff --git a/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/SportDetailVC.swift b/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/SportDetailVC.swift index 22a0030..19787df 100644 --- a/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/SportDetailVC.swift +++ b/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/SportDetailVC.swift @@ -8,76 +8,86 @@ import MAMapKit class SportDetailVC: BaseVC { + let scrollView = UIScrollView() var mapView:MAMapView! - let simpleView = UIView() let detailView = SportDetailBoard() + let pace = FeelView() + let pacePer = FeelView() + let cadence = FeelView() + let elevation = FeelView() + let feel = FeelView() + override func setupViews() { + MapManager.shared.setupSdk() - + mapView = MAMapView(frame: .zero) - mapView.delegate = self - mapView.showsUserLocation = true - mapView.zoomLevel = 16 - mapView.userTrackingMode = .followWithHeading - - view.addSubviews([mapView,simpleView,detailView]) mapView.do { v in - + v.delegate = self + v.showsUserLocation = true + v.zoomLevel = 16 + v.userTrackingMode = .followWithHeading } - simpleView.do { v in - v.yc.setCorners(withRoundedRect: CGRect(x: 0, y: 0, width: kScreenWid, height: 100), roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 20, height: 20)) - v.yc.addTap(target: self, action: #selector(simpleTapAction)) + view.addSubview(scrollView) + scrollView.addSubviews([mapView,detailView,pace,pacePer,cadence,elevation,feel]) + + scrollView.do { v in + } detailView.do { v in v.yc.setCorners(withRoundedRect: CGRect(x: 0, y: 0, width: kScreenWid, height: 460), roundingCorners: [.topLeft,.topRight], cornerRadii: CGSize(width: 20, height: 20)) - v.isHidden = true - v.yc.addTap(target: self, action: #selector(detailTapAction)) } } override func setupLayout() { - simpleView.snp.makeConstraints { make in - make.left.right.equalToSuperview() - make.bottom.equalToSuperview() - make.height.equalTo(100) + scrollView.snp.makeConstraints { make in + make.top.equalToSuperview().inset(kNavBtm) + make.left.equalToSuperview() + make.width.equalTo(kScreenWid) + make.height.equalTo(kScreenHei - kNavBtm) + } + mapView.snp.makeConstraints { make in + make.width.equalTo(kScreenWid) + make.left.top.equalToSuperview() + make.height.equalTo(300) } detailView.snp.makeConstraints { make in - make.left.right.equalToSuperview() - make.bottom.equalToSuperview() - make.height.equalTo(460) + make.left.equalToSuperview() + make.width.equalTo(kScreenWid) + make.top.equalTo(mapView.snp.bottom) + make.height.equalTo(300) } - mapView.snp.makeConstraints { make in - make.left.right.top.equalToSuperview() - make.bottom.equalTo(simpleView.snp.top).offset(20) + pace.snp.makeConstraints { make in + make.left.width.equalTo(detailView) + make.top.equalTo(detailView.snp.bottom) + make.height.equalTo(100) + } + pacePer.snp.makeConstraints { make in + make.left.width.equalTo(detailView) + make.top.equalTo(pace.snp.bottom) + make.height.equalTo(100) + } + cadence.snp.makeConstraints { make in + make.left.width.equalTo(detailView) + make.top.equalTo(pacePer.snp.bottom) + make.height.equalTo(100) + } + elevation.snp.makeConstraints { make in + make.left.width.equalTo(detailView) + make.top.equalTo(cadence.snp.bottom) + make.height.equalTo(100) + } + feel.snp.makeConstraints { make in + make.left.width.equalTo(detailView) + make.top.equalTo(elevation.snp.bottom) + make.height.equalTo(100) + make.bottom.equalToSuperview() } } override func setupData() { } - - @objc func simpleTapAction(){ - simpleView.isHidden = true - detailView.isHidden = false - showDetail() - } - @objc func detailTapAction(){ - simpleView.isHidden = false - detailView.isHidden = true - showSimple() - } - func showSimple(){ - mapView.snp.remakeConstraints { make in - make.left.right.top.equalToSuperview() - make.bottom.equalTo(simpleView.snp.top).offset(20) - } - } - func showDetail(){ - mapView.snp.remakeConstraints { make in - make.left.right.top.equalToSuperview() - make.bottom.equalTo(detailView.snp.top).offset(20) - } - } } extension SportDetailVC:MAMapViewDelegate{ diff --git a/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/StepRateView.swift b/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/StepRateView.swift new file mode 100644 index 0000000..7913a83 --- /dev/null +++ b/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/StepRateView.swift @@ -0,0 +1,7 @@ +// +// stepRateView.swift +// ShenYin +// +// Created by liangshi on 2026/2/10. +// + diff --git a/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/StrideLengthView.swift b/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/StrideLengthView.swift new file mode 100644 index 0000000..3266d83 --- /dev/null +++ b/ShenYin/ShenYin/UI/Sport/Sport/SportDetail/StrideLengthView.swift @@ -0,0 +1,7 @@ +// +// strideLengthView.swift +// ShenYin +// +// Created by liangshi on 2026/2/10. +// + diff --git a/ShenYin/ShenYin/UI/Sport/Sport/Sporting/DetailBoard.swift b/ShenYin/ShenYin/UI/Sport/Sport/Sporting/DetailBoard.swift index f14c052..769b2e1 100644 --- a/ShenYin/ShenYin/UI/Sport/Sport/Sporting/DetailBoard.swift +++ b/ShenYin/ShenYin/UI/Sport/Sport/Sporting/DetailBoard.swift @@ -16,11 +16,11 @@ extension SportingVC{ let speedItem = LabelItem() let calorieItem = LabelItem() let stepItem = LabelItem() - let okBtn = UIButton(type: .custom) + let btnView = ButtonView() override func setupViews() { backgroundColor = .white - addSubviews([topIcon,header,distanceItem,durationItem,speedItem,calorieItem,stepItem,okBtn]) + addSubviews([topIcon,header,distanceItem,durationItem,speedItem,calorieItem,stepItem,btnView]) topIcon.do { v in v.backgroundColor = .color(.secondary) v.yc.setCornerRadius(2) @@ -45,10 +45,7 @@ extension SportingVC{ v.titleLabel.text = "1200" v.detailLabel.text = "步数".l10n } - okBtn.do { v in - v.setImage(UIImage(named: "btn_pause"), for: .normal) - v.addTarget(self, action: #selector(okAction), for: .touchUpInside) - } + } override func setupLayout() { @@ -88,18 +85,123 @@ extension SportingVC{ make.top.equalTo(calorieItem.snp.top) make.height.equalTo(50) } - okBtn.snp.makeConstraints { make in - make.centerX.equalToSuperview() - make.bottom.equalToSuperview().inset(50) - make.size.equalTo(90) + btnView.snp.makeConstraints { make in + make.left.right.bottom.equalToSuperview() + make.height.equalTo(140) } } - @objc func okAction(){ - App.shared.goToPage(SportDetailVC()) - } - + class ButtonView: BaseView { + let okBtn = UIButton(type: .custom) + let lockBtn = UIButton(type: .custom) + let setBtn = UIButton(type: .custom) + + let lockedBtn = UIButton(type: .custom) + let stopBtn = UIButton(type: .custom) + let continueBtn = UIButton(type: .custom) + + override func setupViews() { +// backgroundColor = .red + addSubviews([okBtn,lockBtn,setBtn,lockedBtn,stopBtn,continueBtn]) + okBtn.do { v in + v.setImage(UIImage(named: "btn_pause"), for: .normal) + v.addTarget(self, action: #selector(okAction), for: .touchUpInside) + } + lockBtn.do { v in + v.setImage(UIImage(named: "btn_lock"), for: .normal) + v.addTarget(self, action: #selector(lockAction), for: .touchUpInside) + } + setBtn.do { v in + v.setImage(UIImage(named: "btn_set"), for: .normal) + v.addTarget(self, action: #selector(setAction), for: .touchUpInside) + } + + lockedBtn.do { v in + v.setImage(UIImage(named: "btn_locked"), for: .normal) + v.addTarget(self, action: #selector(lockedAction), for: .touchUpInside) + v.isHidden = true + } + stopBtn.do { v in + v.setImage(UIImage(named: "btn_stop"), for: .normal) + v.addTarget(self, action: #selector(stopAction), for: .touchUpInside) + v.isHidden = true + } + continueBtn.do { v in + v.setImage(UIImage(named: "btn_continue"), for: .normal) + v.addTarget(self, action: #selector(continueAction), for: .touchUpInside) + v.isHidden = true + } + } + + override func setupLayout() { + okBtn.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.bottom.equalToSuperview().inset(24) + make.size.equalTo(90) + } + lockBtn.snp.makeConstraints { make in + make.left.equalToSuperview().inset(46) + make.centerY.equalTo(okBtn) + make.size.equalTo(50) + } + setBtn.snp.makeConstraints { make in + make.right.equalToSuperview().inset(46) + make.centerY.equalTo(okBtn) + make.size.equalTo(50) + } + + lockedBtn.snp.makeConstraints { make in + make.centerX.equalToSuperview() + make.bottom.equalToSuperview().inset(24) + make.size.equalTo(90) + } + continueBtn.snp.makeConstraints { make in + make.left.equalToSuperview().inset(55) + make.bottom.equalToSuperview().inset(24) + make.size.equalTo(90) + } + stopBtn.snp.makeConstraints { make in + make.right.equalToSuperview().inset(55) + make.bottom.equalToSuperview().inset(24) + make.size.equalTo(90) + } + } + @objc func okAction(){ + continueBtn.isHidden = false + stopBtn.isHidden = false + + okBtn.isHidden = true + setBtn.isHidden = true + lockBtn.isHidden = true + } + @objc func lockAction(){ + okBtn.isHidden = true + setBtn.isHidden = true + lockBtn.isHidden = true + lockedBtn.isHidden = false + } + @objc func setAction(){ + + } + @objc func lockedAction(){ + okBtn.isHidden = false + setBtn.isHidden = false + lockBtn.isHidden = false + lockedBtn.isHidden = true + } + @objc func stopAction(){ + App.shared.goToPage(SportDetailVC()) + } + @objc func continueAction(){ + okBtn.isHidden = false + setBtn.isHidden = false + lockBtn.isHidden = false + + continueBtn.isHidden = true + stopBtn.isHidden = true + } + } class headerItem: BaseView { let deviceLabel = UILabel() let deviceView = UIView() diff --git a/ShenYin/ShenYin/UI/Sport/Sport/Tools/SportManager.swift b/ShenYin/ShenYin/UI/Sport/Sport/Tools/SportManager.swift new file mode 100644 index 0000000..ae6d427 --- /dev/null +++ b/ShenYin/ShenYin/UI/Sport/Sport/Tools/SportManager.swift @@ -0,0 +1,13 @@ +// +// SportManager.swift +// ShenYin +// +// Created by liangshi on 2026/2/10. +// + +class SportManager { + static let shared = SportManager() + var sortType = SportType.ride + + +}