SwiftUI 教程

SwiftUI - 主页 SwiftUI - 概览 SwiftUI 与 UIkit

SwiftUI 环境

SwiftUI - 环境设置 SwiftUI - 基本组件 SwiftUI - 构建第一个应用程序

SwiftUI 视图

SwiftUI - 视图 SwiftUI - 自定义文本视图 SwiftUI - 自定义图像视图 SwiftUI - 堆栈

SwiftUI 绘制形状

SwiftUI - 形状 SwiftUI - 绘制线条 SwiftUI - 绘制矩形 SwiftUI - 绘制圆角矩形 SwiftUI - 绘制三角形 SwiftUI - 绘制圆形 SwiftUI - 绘制星形 SwiftUI - 绘制多边形 SwiftUI - 绘制饼图 SwiftUI - 使用内置形状

SwiftUI - 文本

SwiftUI - 文本视图 SwiftUI - 文本输入和输出

SwiftUI - 颜色

SwiftUI - 颜色 SwiftUI - 颜色选择器 SwiftUI - 渐变 SwiftUI - 调整颜色

SwiftUI - 效果

SwiftUI - 效果 SwiftUI - 混合效果 SwiftUI - BLur 效果 SwiftUI - 阴影效果 SwiftUI - 悬停效果

SwiftUI - 动画

SwiftUI - 动画 SwiftUI - 创建动画 SwiftUI - 创建显式动画 SwiftUI - 多个动画 SwiftUI - 过渡 SwiftUI - 不对称过渡 SwiftUI - 自定义过渡

SwiftUI - 图像

SwiftUI - 图像 SwiftUI - 图像作为背景 SwiftUI - 旋转图像 SwiftUI - 媒体

SwiftUI - 视图布局

SwiftUI - 视图布局 SwiftUI - 视图大小 SwiftUI - 视图间距 SwiftUI - 视图填充

SwiftUI - UI 控件

SwiftUI - UI 控件 SwiftUI - 按钮 SwiftUI - 复选框 SwiftUI - 菜单栏 SwiftUI - 工具栏 SwiftUI - 搜索栏 SwiftUI - 文本字段 SwiftUI - 滑块 SwiftUI - 切换 SwiftUI - 选择器 SwiftUI - 菜单

SwiftUI - 列表 &表格

SwiftUI - 列表 SwiftUI - 静态列表 SwiftUI - 动态列表 SwiftUI - 自定义列表 SwiftUI - 表格

SwiftUI - 表单

SwiftUI - 表单 SwiftUI - 在部分中拆分表单

SwiftUI - 事件处理

SwiftUI - 事件处理 SwiftUI - 手势 SwiftUI - 剪贴板 SwiftUI - 拖放 SwiftUI - 焦点 SwiftUI - 警报

SwiftUI - 杂项

SwiftUI - 容器 SwiftUI - 导航 SwiftUI - 通知 SwiftUI - 跨平台 UI SwiftUI - 数据 SwiftUI - 可访问性

SwiftUI - 框架集成

SwiftUI - 框架集成 SwiftUI - 与 UIKit 交互 SwiftUI - 创建 macOS 应用

SwiftUI 有用资源

SwiftUI - 有用资源 SwiftUI - 讨论


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 项目中使用视频,我们必须首先将该视频添加到项目文件夹中。要添加视频,请转到 Navigator 并将视频拖放到项目文件夹中。

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 的主体部分使用 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()
}

输出

媒体