SwiftUI - 媒体



在 SwiftUI 中,播放视频是 UI 中最重要的组件之一。它增强了用户体验,并使 UI 更加吸引人。因此,从 iOS 14 开始,Apple 引入了 VideoPlayer 组件来在应用程序中播放视频。此视图在当前视图或我们想要的视图中提供视频播放器,并且能够显示来自 URL、本地或远程的视频。

SwiftUI 中的 VideoPlayer 视图

VideoPlayer 视图用于在指定的视图中添加视频播放器以显示短视频、电影等。它可以显示视频。

语法

以下是语法:

VideoPlayer(player: AVplayer?, videoOverlay:() -> VideoOverlay)

参数

此视图使用以下参数:

  • player: 它显示一个用于显示视听数据的播放器。

  • videoOverlay: 此闭包返回一个位于播放器视频之上的视图。它具有交互性,但位于系统提供的播放控件下方,并且只能获取未处理的事件。

在 SwiftUI 中添加视频播放器的步骤

要将视频添加到应用程序,我们必须按照以下步骤操作:

步骤 1:打开 Xcode

打开 Xcode 并创建一个新项目。

步骤 2:将视频添加到 Xcode

现在,要在 Xcode 项目中使用视频,我们必须首先将该视频添加到项目文件夹中。要添加视频,请转到导航器并将视频拖放到项目文件夹中。

Media

步骤 3:导入 AVKit

要将媒体播放器添加到项目中,我们必须首先导入 AVKit 库。AVKit 是一个用于处理视听媒体的特殊框架。它提供了一套完整的控件来处理视听媒体,包括导航、画中画支持、字幕、隐藏式字幕等。

import AVKit

步骤 5:创建视频的 URL

将视频添加到项目文件夹后,现在我们必须创建图像的 URL,以便我们可以使用该 URL 在视频播放器中调用它。因此,我们可以使用 url(forResource:withExtension) 方法创建视频的 URL。

let mediaURL: URL? = Bundle.main.url(forResource: "multipleAnimation3", withExtension: "mov")

步骤 6:使用 VideoPlayer

现在,我们在 ContentView 的 body 部分使用 VideoPlayer 以在屏幕上显示视频播放器。

VideoPlayer(player: AVplayer?, videoOverlay:() -> VideoOverlay)

自定义视频播放器

在 SwiftUI 中,我们可以使用以下修饰符自定义视频播放器的外观:

方法 描述
frame() 用于调整视频播放器的大小。
background() 用于设置视频播放器后面视图的背景颜色。
padding() 用于在播放器或给定控件周围添加空间。这可以更有效地定义播放器的位置。
onAppear() 插入在给定视图出现之前执行的操作。
onDisappear() 插入在给定视图消失之前执行的操作。
fullScreenCover() 用于尽可能多地覆盖视频播放器的屏幕。
offset() 用于调整视频播放器的位置。

示例

通过以下示例,我们将了解如何使用视频播放器:

示例 1

以下 SwiftUI 程序用于在视图中插入媒体播放器。

import SwiftUI
import AVKit

struct ContentView: View {
   let mediaURL: URL? = Bundle.main.url(forResource: "multipleAnimation3", withExtension: "mov")
   
   var body: some View {
      ZStack{
         if let url = mediaURL{
            VideoPlayer(player: AVPlayer(url: url))
         }else{
            Text("Not Found")
            
         }
      }
   }
}
   
#Preview {
   ContentView()
}

输出

Media

示例 2

在以下 SwiftUI 程序中,我们将从远程 URL 获取视频。

import SwiftUI
import AVKit

struct ContentView: View {
   let mediaURL: URL? = URL(string: "https://www.youtube.com/watch?v=eGtV-sZ1wmw")
   
   var body: some View {
      ZStack{
         if let url = mediaURL{
            VideoPlayer(player: AVPlayer(url: url))
         }else{
            Text("Not Found").foregroundStyle(.white)
            
         }
      }
   }
}
   
#Preview {
   ContentView()
}

输出

Media

示例 3

在以下 SwiftUI 程序中,我们将自定义视频播放器。

import SwiftUI
import AVKit

struct ContentView: View {
   let mediaURL: URL? = Bundle.main.url(forResource: "multipleAnimation3", withExtension: "mov")
   
   var body: some View {
      ZStack{
         if let url = mediaURL{
            VideoPlayer(player: AVPlayer(url: url), videoOverlay: {Text("NEW VIDEO").font(.title).foregroundStyle(.red).bold()
               .padding(.top)})
            .frame(width: 380, height: 300)
         }else{
            Text("Not Found")
         }
      }
   }
}
   
#Preview {
   ContentView()
}

输出

Media
广告