我想播放一些视频在水花屏幕的纵向模式-全屏。这有可能吗?请指导我找到正确的解决方案。
我在寻找快速的解决方案
发布于 2017-12-18 13:42:02
创建UIView的子类,其中包含一个AVPlayer和一个函数createBackground
import AVFoundation
class BackgroundVideo: UIView {
var player: AVPlayer?
func createBackground(name: String, type: String) { }
}那么您的createBackground可能是这样的:
func createBackground(name: String, type: String) {
guard let path = Bundle.main.path(forResource: name, ofType: type) else { return }
player = AVPlayer(url: URL(fileURLWithPath: path))
player?.actionAtItemEnd = AVPlayerActionAtItemEnd.none;
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = self.frame
playerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
self.layer.insertSublayer(playerLayer, at: 0)
player?.seek(to: kCMTimeZero)
player?.play()
}然后您可以添加更多的内容,例如观察通知:
AVPlayerItemDidPlayToEndTime。UIApplicationWillEnterForeground用于控制视频循环,从背景恢复后。最后,您可以附加这个BackgroundView,无论您需要什么地方:假飞溅屏幕,主屏幕,等等。
发布于 2017-12-18 13:38:55
SWIFT 3.0
您不能在默认的启动屏幕中这样做,但是您可以做一些解决办法来解决这个问题。
首先,你应该采取你的视频的第一帧,这将是图像。
您可以使用photoshop或任何其他图形工具来实现这一点。
现在,您可以在UIImageView中将其设置为默认启动屏幕。
现在制作一个UIViewController并启动它作为初始视图控制器。
下面是播放视频的代码
private func playFullScreenVideo() {
// drag your video file in project
// check if video file is available,if not return
guard let path = Bundle.main.path(forResource: "video", ofType:"mp4") else {
debugPrint("video.mp4 missing")
return
}
// create instance of videoPlayer with video path
let videoPlayer = AVPlayer(url: URL(fileURLWithPath: path))
// create instance of playerlayer with videoPlayer
let playerLayer = AVPlayerLayer(player: videoPlayer)
// set its videoGravity to AVLayerVideoGravityResizeAspectFill to make it full size
playerLayer.videoGravity = AVLayerVideoGravityResizeAspectFill
// add it to your view
playerLayer.frame = self.view.frame
playerView.layer.addSublayer(playerLayer)
// start playing video
videoPlayer?.play()
}如果在这件事上有什么麻烦请告诉我
发布于 2017-12-18 13:37:46
app委托的内部didFinishLaunch方法
let splashScreenVC = viewController(withIdentifier: "identifier", inStoryboard: "storyboard:) as? SplashViewController
window?.rootViewController = splashScreenVC 在视图控制器SplashViewController中,可以使用viewDidLoad方法播放视频。
func playVideo() {
guard let videoPath = Bundle.main.path(forResource: "Redtaxi-splash", ofType:"mov") else {
return
}
let videoURL = URL(fileURLWithPath: videoPath)
let player = AVPlayer(url: videoURL)
playerViewController = AVPlayerViewController()
playerViewController?.player = player
playerViewController?.showsPlaybackControls = false
playerViewController?.view.frame = view.frame
playerViewController?.view.backgroundColor = .white
playerViewController?.view.contentMode = .scaleAspectFill
NotificationCenter.default.addObserver(self, selector: #selector(playerDidFinishPlaying(note:)),
name: NSNotification.Name.AVPlayerItemDidPlayToEndTime, object: player.currentItem)
view.addSubview((playerViewController?.view)!)
playerViewController?.player?.play()
}https://stackoverflow.com/questions/47869441
复制相似问题