【发布时间】:2021-12-31 08:05:11
【问题描述】:
我是 Swift / iOS 的新手,所以如果我觉得我很愚蠢,我深表歉意。我正在尝试在启动时为我的电容器 iOS 应用程序播放自定义视频闪屏,但我似乎在使用 segues 切换视图控制器时遇到了麻烦。在我的 Main storyboard 上,我有两个 View Controller,一个 Capacitor Bridge View(它可以很好地运行我的 react 应用程序),还有一个 AVPlayer View Controller。
我已将我的 AVPlayer 设置为初始视图控制器,并创建了一个到电容器桥视图的 segue,该 segue 的 id 为“test”,我在视频末尾的自定义 AVPlayer 控制器中调用了 performegue() 方法,尽管它正在运行,但它什么也没做。
这是我的 AVPlayer 的自定义类
//
// AVPlayer.swift
// App
//
//
import Foundation
import UIKit
import AVFoundation
import AVKit
import Capacitor
class viewControl: AVPlayerViewController {
override func viewDidAppear(_ animated: Bool) {
playVideo()
}
let playerController = AVPlayerViewController()
private func playVideo() {
guard let path = Bundle.main.path(forResource: "Splash_Screen_Christmas", ofType:"mp4") else {
debugPrint("splash.m4v not found")
return
}
let player = AVPlayer(url: URL(fileURLWithPath: path))
playerController.showsPlaybackControls = false
playerController.player = player
playerController.videoGravity = .resizeAspectFill
NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying), name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: playerController.player?.currentItem)
present(playerController, animated: true) {
player.play()
}
}
@objc func playerDidFinishPlaying(note: NSNotification) {
// let storyboard = UIStoryboard(name: "Main", bundle: nil)
// let vc = storyboard.instantiateViewController(withIdentifier: "MainVC")
performSegue(withIdentifier: "test", sender: self)
print("Method, video is finished ")
}
}
视频播放后,模拟器记录“视频完成”,但桥视图控制器没有被推送。
【问题讨论】: