Swiftycam媒体捕获库代表崩溃

时间:2018-02-01 11:31:22

标签: ios swift uiviewcontroller delegates swiftycam

我正在使用名为SwiftyCam的库。正如其页面中提到的,这部分有点令人困惑:

SwiftyCam是一个简单易用的框架。要创建Camera实例,请创建一个新的UIViewController子类。用SwiftyCamViewController替换UIViewController子类声明。

所以我在示例项目中创建了一个新的视图控制器扩展class SwiftyCameraViewController: SwiftyCamViewController, SwiftyCamViewControllerDelegate。我从我的主要UIViewcontroller(MainViewController.swift)调用此类为:

let swiftyCamera = SwiftyCameraViewController()
self.present(swiftyCamera, animated: true, completion: nil)

所以,这是SwiftyCameraViewController:

import UIKit

class SwiftyCameraViewController: SwiftyCamViewController, SwiftyCamViewControllerDelegate {

@IBOutlet weak var captureButton: SwiftyRecordButton!
@IBOutlet weak var flipCameraButton: UIButton!
@IBOutlet weak var flashButton: UIButton!

override func viewDidLoad() {
    super.viewDidLoad()

    cameraDelegate = self
    maximumVideoDuration = 10.0
    shouldUseDeviceOrientation = true
    allowAutoRotate = true
    audioEnabled = true
}

override var prefersStatusBarHidden: Bool {
    return true
}

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    captureButton.delegate = self
}

func swiftyCam(_ swiftyCam: SwiftyCamViewController, didTake photo: UIImage) {
    let newVC = PhotoViewController(image: photo)
    self.present(newVC, animated: true, completion: nil)
}

func swiftyCam(_ swiftyCam: SwiftyCamViewController, didBeginRecordingVideo camera: SwiftyCamViewController.CameraSelection) {
    print("Did Begin Recording")
    captureButton.growButton()
    UIView.animate(withDuration: 0.25, animations: {
        self.flashButton.alpha = 0.0
        self.flipCameraButton.alpha = 0.0
    })
}

func swiftyCam(_ swiftyCam: SwiftyCamViewController, didFinishRecordingVideo camera: SwiftyCamViewController.CameraSelection) {
    print("Did finish Recording")
    captureButton.shrinkButton()
    UIView.animate(withDuration: 0.25, animations: {
        self.flashButton.alpha = 1.0
        self.flipCameraButton.alpha = 1.0
    })
}

func swiftyCam(_ swiftyCam: SwiftyCamViewController, didFinishProcessVideoAt url: URL) {
    let newVC = VideoViewController(videoURL: url)
    self.present(newVC, animated: true, completion: nil)
}

func swiftyCam(_ swiftyCam: SwiftyCamViewController, didFocusAtPoint point: CGPoint) {
    let focusView = UIImageView(image: #imageLiteral(resourceName: "focus"))
    focusView.center = point
    focusView.alpha = 0.0
    view.addSubview(focusView)

    UIView.animate(withDuration: 0.25, delay: 0.0, options: .curveEaseInOut, animations: {
        focusView.alpha = 1.0
        focusView.transform = CGAffineTransform(scaleX: 1.25, y: 1.25)
    }, completion: { (success) in
        UIView.animate(withDuration: 0.15, delay: 0.5, options: .curveEaseInOut, animations: {
            focusView.alpha = 0.0
            focusView.transform = CGAffineTransform(translationX: 0.6, y: 0.6)
        }, completion: { (success) in
            focusView.removeFromSuperview()
        })
    })
}

func swiftyCam(_ swiftyCam: SwiftyCamViewController, didChangeZoomLevel zoom: CGFloat) {
    print(zoom)
}

func swiftyCam(_ swiftyCam: SwiftyCamViewController, didSwitchCameras camera: SwiftyCamViewController.CameraSelection) {
    print(camera)
}

func swiftyCam(_ swiftyCam: SwiftyCamViewController, didFailToRecordVideo error: Error) {
    print(error)
}

@IBAction func cameraSwitchTapped(_ sender: Any) {
    switchCamera()
}

@IBAction func toggleFlashTapped(_ sender: Any) {
    flashEnabled = !flashEnabled

    if flashEnabled == true {
        flashButton.setImage(#imageLiteral(resourceName: "flash"), for: UIControlState())
    } else {
        flashButton.setImage(#imageLiteral(resourceName: "flashOutline"), for: UIControlState())
    }
}
}

它在第33行崩溃:captureButton.delegate = self,因为 captureButton nil

我感谢任何帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

您必须加载带有标识符

的viewController
let swiftyCamera = self.storyboard?.instantiateViewController(withIdentifier:"swiftyCameraID")
self.present(swiftyCamera, animated: true, completion: nil)