gpt4 book ai didi

swift - 在 SwiftUI View 中嵌入视频

转载 作者:行者123 更新时间:2023-12-03 09:25:59 24 4
gpt4 key购买 nike

我的主要目标是使用 SwiftUI 将 GIF/MP4 文件嵌入到 HStack/VStack 的 View 中。我了解代码需要符合“可表示”协议(protocol)。我的第一次尝试如下:

import SwiftUI
import AVKit

struct GIF : UIViewControllerRepresentable {

let url_name: String

func makeUIViewController(context: UIViewControllerRepresentableContext<GIF>) -> AVPlayerViewController {
return AVPlayerViewController()
}

func updateUIViewController(_ uiViewController: AVPlayerViewController, context: UIViewControllerRepresentableContext<GIF>) {
let url = URL(string: url_name)!
let player = AVPlayer(url: url)
let vc = AVPlayerViewController()
vc.player = player
//PROBLEM
self.present(vc, animated: true){
vc.player?.play()
}
}
}

问题是我认为“自我”在这里没有任何意义,我们需要引用一个观点。我们将如何做到这一点?我们不能只在 Storyboard中创建 View ,因为我想将 View Controller 与 SwiftUI 集成。

任何帮助,将不胜感激。

附言这是我的第一个 iOS 应用程序,所以如果我在这里遗漏了一些非常明显的东西,请尽量友善!

最佳答案

包装旧的 AVPlayerViewController 很容易

import AVKit
import SwiftUI

struct AVPlayerView: UIViewControllerRepresentable {
@Binding var videoURL: URL?

private var player: AVPlayer? {
guard let url = videoURL else {
return nil
}
return AVPlayer(url: url)
}

func updateUIViewController(_ playerController: AVPlayerViewController, context: Context) {
playerController.player = player
playerController.player?.play()
}

func makeUIViewController(context: Context) -> AVPlayerViewController {
AVPlayerViewController()
}
}
但是如果你的目标等于或高于 14,你可以使用来自 swiftui 的 VideoPlayer 组件,而无需任何包装器
import SwiftUI
import AVKit

struct UrView: View {
var body: some View {
VideoPlayer(
player: AVPlayer(url: URL(string: "{ur url}"))
)
}
}

关于swift - 在 SwiftUI View 中嵌入视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56941188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com