ios - 为 Instagram 和 Vine 等 iOS 应用程序注册添加视频背景

标签 ios swift video background-image ios9

我创建了一个应用程序,它使用 swift 加载并具有登录/注册页面等。目前我有一张图片作为背景,但想添加代码,以便在后台播放 gif/mov,就像在 vine 或 instagram 等应用程序中一样。

如何将视频集成到我当前的代码中?我对此也很陌生,所以一直在关注教程。另外,如果有人知道如何删除解析 Logo ,那也会有所帮助。

视频出现在我的 Storyboard上的 UI 前面!我怎样才能让它们出现在背景 GIF 的前面?

下面是我目前拥有的登录 View Controller 代码。

import UIKit
import Foundation

class SignInViewController: UIViewController, UITextFieldDelegate {

@IBOutlet weak var userName: UITextField!
@IBOutlet weak var password: UITextField!

@IBOutlet weak var errorLabel: UILabel!

override func viewDidLoad() {

       super.viewDidLoad()

    let filePath = NSBundle.mainBundle().pathForResource("beachwater", ofType: "gif")
    let gif = NSData(contentsOfFile: filePath!)

    let webViewBG = UIWebView(frame: self.view.frame)
    webViewBG.loadData(gif!, MIMEType: "image/gif", textEncodingName: "UTF-8", baseURL: NSURL(string: "")!)
    webViewBG.userInteractionEnabled = false;
    self.view.addSubview(webViewBG)


    userName.delegate = self
    password.delegate = self
}


@IBAction func signInTouched(sender: UIButton) {

    let signin = SignIn(user: userName.text!, pass: password.text!)

    do {
        try signin.signInUser()
        self.dismissViewControllerAnimated(true, completion: nil)


    } catch let error as Error {
        errorLabel.text = error.description
    } catch {
        errorLabel.text = "Sorry something went\n wrong please try again"
    }

}

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
    self.view.endEditing(true)

}

}

最佳答案

以下代码允许您为 View Controller 添加视频背景。

它是用 Swift 编写的,可以播放 mp4 视频文件。

对于 Swift 5

import AVFoundation

class VideoBackgroundController: UIViewController {
    var avPlayer: AVPlayer!
    var avPlayerLayer: AVPlayerLayer!
    var paused: Bool = false

    override func viewDidLoad() {

        let theURL = Bundle.main.url(forResource:"my_video_file", withExtension: "mp4")

        avPlayer = AVPlayer(url: theURL!)
        avPlayerLayer = AVPlayerLayer(player: avPlayer)
        avPlayerLayer.videoGravity = .resizeAspectFill
        avPlayer.volume = 0
        avPlayer.actionAtItemEnd = .none

        avPlayerLayer.frame = view.layer.bounds
        view.backgroundColor = .clear
        view.layer.insertSublayer(avPlayerLayer, at: 0)

        NotificationCenter.default.addObserver(self,
                                           selector: #selector(playerItemDidReachEnd(notification:)),
                                           name: .AVPlayerItemDidPlayToEndTime,
                                           object: avPlayer.currentItem)
    }

    @objc func playerItemDidReachEnd(notification: Notification) {
        let p: AVPlayerItem = notification.object as! AVPlayerItem
        p.seek(to: .zero)
    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        avPlayer.play()
        paused = false
    }

    override func viewDidDisappear(_ animated: Bool) {
        super.viewDidDisappear(animated)
        avPlayer.pause()
        paused = true
    }
}

关于ios - 为 Instagram 和 Vine 等 iOS 应用程序注册添加视频背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32888378/

相关文章:

ios - 如何在没有导航 Controller 的情况下取消模态视图 Controller ?

ios - XCode 5 - 使图像像按钮一样可点击

ios - 渐变不覆盖 iphone plus 设备上的图像 ios swift 3

html - 增加视频分辨率但不增加可见尺寸

html - 两个不同的 YouTube 嵌入,两次相同的视频

android - 视频未在 Android 设备的默认播放器中播放

ios - Storyboard UICollectionViewCell 出现,然后变为空白

ios - 无法在单例类中初始化 CGFloat

swift - 在 Swift 中,如何将字符串值分配给另一个类中的属性?

iphone - 如何从应用程序转到 iPhone 设置