目录
一、项目先容
1.项目阅览编辑
2.项目简介
3.项目出处
二、项目目的
三、项目框架
1.swiftUI
2.AVKit
四、项目布局
1.主要组件
2.布局
3.音频控制
4.播放器视图
5.优化
6.制作流程
五、代码分析
1.导入模块和声明布局体:
2.状态变量
3.视图布局
4.音频播放控制函数
4.1设置音频播放器
4.2播放音频编辑
4.2停息音频编辑
4.3更新播放进度
4.4跳转到指定时间播放
4.5将时间间隔格式化为字符串
4.6播放器视图
4.7优化代码(扩展功能)
一、项目先容
1.项目阅览
2.项目简介
本项目旨在开发一个简单且功能齐全的音乐播放器应用,利用SwiftUI和AVFoundation框架实现。该应用能够播放、停息音乐,并显示音乐播放的进度条。用户可以通过滑块控制播放进度,应用在播放时会实时更新当前播放时间。
3.项目出处
SwiftUI开发音乐播放器_哔哩哔哩_bilibili
二、项目目的
- 实现一个基本的音乐播放器功能,包罗播放、停息、进度控制。
- 学习和应用SwiftUI的视图构建方法。
- 相识AVFoundation框架在音频处理方面的基本利用方法。
三、项目框架
1.swiftUI
- 用途:用于构建用户界面。
- 功能:提供声明式语法来构建UI视图,支持相应式编程,能够与视图绑定变量和状态。
2.AVKit
- 用途:用于处理音频和视频的播放。
- 功能:提供播放、停息、进度控制等多媒体功能。
四、项目布局
1.主要组件
- ContentView:这是应用的主视图,包含了播放器的布局和功能。
- @State 和 @Binding 变量:这些变量用于管理播放器的状态和界面交互。
- @State private var player: AVAudioPlayer?:音频播放器对象。
- @State private var isPlaying = false:当前播放状态。
- @State private var totalTime: TimeInterval = 0.0:音频总时长。
- @State private var currentTime: TimeInterval = 0.0:当前播放时间。
- @Binding var expandSheet: Bool:用于控制是否展开Sheet。
- var animation: Namespace.ID:用于动画的命名空间ID。
- @State private var animationContent: Bool = false:控制动画内容的状态变量。
2.布局
- GeometryReader:用于读取视图的几何信息,如尺寸和安全区域。
- ZStack:叠加布局,配景矩形和模糊图像。
- VStack:垂直堆叠布局,包含图像和播放器视图。
3.音频控制
- setupAudio():设置音频播放器,包罗加载音频文件和获取音频总时长。
- playAudio():播放音频。
- stopAudio():停息音频。
- updateProgress():更新播放进度。
- seekAudio(to:跳转到指定时间播放音频。
4.播放器视图
PlayerView(_:自定义播放器视图,包含音频信息、播放进度条、播放控制按钮和音量控制。
5.优化
deviceCornerRadius:扩展View来获取设备屏幕的圆角半径,确保界面适配不同设备。
6.制作流程
- 创建项目:利用 Xcode 创建一个新的 SwiftUI 项目。
- 添加资源:将音频文件和图像资源添加到项目的资源包中。
- 构建布局:利用 SwiftUI 构建应用的主界面,包含图像和播放器控件。
- 实现音频控制:利用 AVFoundation 框架实现音频的播放、停息和进度更新功能。
- 调试和优化:在模拟器或真机上测试应用,确保音频播放功能正常,并根据需要进行优化。
五、代码分析
1.导入模块和声明布局体:
- 导入SwiftUI和AVKit框架。
- 声明ContentView布局体并定义其属性。
2.状态变量
- 定义用于管理音频播放器和播放状态的状态变量,比方player、isPlaying、totalTime和currentTime。
- 定义用于控制Sheet扩展的绑定变量expandSheet和动画命名空间animation。
3.视图布局
- 利用GeometryReader读取视图的几何信息。
- 利用ZStack、Rectangle和Image构建配景视图。
- 利用VStack构建主视图布局,包罗图像和播放器视图。
4.音频播放控制函数
4.1设置音频播放器
4.2播放音频
4.2停息音频
4.3更新播放进度
4.4跳转到指定时间播放
4.5将时间间隔格式化为字符串
4.6播放器视图
4.7优化代码(扩展功能)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |