【发布时间】:2021-04-05 16:13:44
【问题描述】:
导航到子视图时,我已将其设置为自动播放视频。在视频的底部,有一组指向相关内容的链接。单击其中一个时,会将一个新视图推送到堆栈中,并开始播放不同的视频。
使用自动生成的“
我已尝试更新 CGRect 帧,使用 onAppear 重新初始化视频播放器,也遵循了 here 的建议。
到目前为止,似乎没有任何效果。这是我用于实际视频播放器的代码(改编自 Chris Mash 的网站):
import SwiftUI
import AVKit
import UIKit
import AVFoundation
let playerLayer = AVPlayerLayer()
class PlayVideo: UIView {
init(frame: CGRect, url: URL) {
super.init(frame: frame)
// Create the video player using the URL passed in.
let player = AVPlayer(url: url)
player.volume = 100 // Will play audio if you don't set to zero
player.play() // Set to play once created
// Add the player to our Player Layer
playerLayer.player = player
playerLayer.videoGravity = .resizeAspectFill // Resizes content to fill whole video layer.
playerLayer.backgroundColor = UIColor.black.cgColor
layer.addSublayer(playerLayer)
}
required init?(coder: NSCoder) {
super.init(coder: coder)
}
override func layoutSubviews() {
super.layoutSubviews()
playerLayer.frame = bounds
}
static func pauseVideo() {
playerLayer.player?.pause()
}
}
struct ViewVideo: UIViewRepresentable {
var videoURL:URL
var previewLength:Double?
func makeUIView(context: Context) -> UIView {
return PlayVideo(frame: .zero, url: videoURL)
}
func updateUIView(_ uiView: UIView, context: Context) {
}
}
这是从主视图调用的,使用: ViewVideo(videoURL: videoURL)
我能想到的唯一解决方法是禁用后退按钮并强制用户每次都返回主视图。这是一个糟糕的选择,我希望有人能在这里提供一些有用的建议。谢谢 -
【问题讨论】:
-
我已经尝试过这里的建议:developer.apple.com/forums/thread/116120。那也行不通。在全屏和返回时也会出现此问题。
标签: ios swift avfoundation avplayer avkit