admin 管理员组

文章数量: 1184232

目录

一、项目介绍

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.导入模块和声明结构体:

  • 导入SwiftUIAVKit框架。
  • 声明ContentView结构体并定义其属性。

2.状态变量

  • 定义用于管理音频播放器和播放状态的状态变量,例如playerisPlayingtotalTimecurrentTime
  • 定义用于控制Sheet扩展的绑定变量expandSheet和动画命名空间animation

3.视图布局

  • 使用GeometryReader读取视图的几何信息。
  • 使用ZStackRectangleImage构建背景视图。
  • 使用VStack构建主视图布局,包括图像和播放器视图。

4.音频播放控制函数

4.1设置音频播放器

4.2播放音频

4.2暂停音频

4.3更新播放进度

4.4跳转到指定时间播放

4.5将时间间隔格式化为字符串

4.6播放器视图

4.7优化代码(扩展功能)

本文标签: 实战 音频播放器 SwiftUI