D0c1a41128297990dd8e0fe20def7852
SwiftUI 运动类完整项目之 自行车运动App具有实时路线跟踪、实时指标、过去自行车路线coredata(项目含源码)

实战需求

SwiftUI 运动类完整项目之 自行车运动App具有实时路线跟踪、实时指标、过去自行车路线

本文价值与收获

看完本文后,您将能够作出下面的界面

SwiftUI 运动类完整项目之 自行车运动App具有实时路线跟踪

SwiftUI 运动类完整项目之 自行车运动App具有实时路线跟踪

SwiftUI 运动类完整项目之 自行车运动App具有实时路线跟踪

SwiftUI 运动类完整项目之 自行车运动App具有实时路线跟踪

SwiftUI 运动类完整项目之 自行车运动App具有实时路线跟踪

SwiftUI 运动类完整项目之 自行车运动App具有实时路线跟踪


项目介绍

该项目是一款专为iOS构建的自行车跟踪器应用程序,具有SwiftUI。它旨在对各级自行车手极其容易使用。该项目的一个关键部分是它的隐私立场,不需要任何类型的登录,所有数据都仅存储在用户的设备上。它也不包含任何广告。

该项目利用了许多苹果的框架和API,包括:

  • 位置数据的核心位置
  • MapKit用于整个应用程序的嵌入式地图
  • 用于循环路线和用户首选项的持久数据存储的核心数据
  • 合并以进行位置更新事件处理

系统要求

由于使用了最新的SwiftUI功能,该应用程序旨在支持所有装有iOS14/iPadOS14及更高版本的iPhone和iPad。

对于iPad,这包括支持横向和Portait模式,以及侧拉和多任务屏幕尺寸。

使用注意

注:要跟踪当前位置的,您必须在“设置”中允许位置访问(该应用程序还将在首次启动时请求权限)。位置权限必须设置为“始终允许”,才能在应用程序不在屏幕上时进行位置更新。

应用功能

该项目有许多功能被打包成三个选项卡:循环、历史记录和设置。它还完全支持浅色和深色模式,根据设备设置自动设置模式。

注:显示的所有屏幕截图都是在iPhone 12 Pro Max模拟器上拍摄的。

循环选项卡的功能

  • 使用屏幕上的秒表开始、停止、暂停和恢复路线
  • 查看当前的骑行指标,包括骑行距离、速度和高度
  • 显示当前位置和路径的大地图
  • 显示持续路线骑行时间的计时器

历史标签的特点

  • 在易于阅读的列表中查看所有过去的自行车骑行
  • 按时间、距离和日期对您的所有自行车骑行进行排序(均提供升序或降序)
  • 点击单次自行车骑行以查看全屏视图,包括路线地图和指标
  • 每个列表条目都可以通过向左轻扫删除

实战代码

主界面

import SwiftUI
import CoreData

struct MainView: View {
    @EnvironmentObject var preferences: PreferencesStorage

    var body: some View {
        TabView {
            CycleView()
                .tabItem {
                    Label("Cycle", systemImage: "bicycle")
                }

            HistoryView()
                .tabItem {
                    Label("History", systemImage: "clock.arrow.circlepath")
                }
            SettingsView()
                .tabItem {
                    Label("Settings", systemImage: "gear")
                }
        }
        .accentColor(Color(UserPreferences.convertColourChoiceToUIColor(colour: preferences.storedPreferences[0].colourChoiceConverted)))
    }
}

struct MainView_Previews: PreviewProvider {
    static var previews: some View {
        MainView()
    }
}

骑行界面

```
import SwiftUI

struct CycleView: View {

@EnvironmentObject var cyclingStatus: CyclingStatus

@StateObject var timer = TimerViewModel()
@State private var showingAlert = false
@State private var cyclingSpeed = 0.0
top Created with Sketch.