ios - Swiftycam 媒体捕获库委托(delegate)崩溃

标签 ios swift uiviewcontroller delegates swiftycam

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

SwiftyCam 是一个嵌入式便捷框架。要创建 Camera 实例,请创建一个新的 UIViewController 子类。将 UIViewController 子类声明替换为 SwiftyCamViewController。

因此,我创建了一个新的 View Controller ,它扩展了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,因为 captureButtonnil

我感谢任何形式的帮助。谢谢。

最佳答案

您必须加载带有标识符的viewController

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

关于ios - Swiftycam 媒体捕获库委托(delegate)崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48561685/

相关文章:

ios - iOS 上的默认文件保护是什么以及如何更改它

ios - 点击按钮时获取用户位置

ios - 如何从另一个访问某些变量的swift文件访问函数 - ios

json - 将 JSON 数据返回给 Swift 中的调用类

ios - 如何用两个 "tabs"更好地实现 UITableView ?

iphone - uitableView,带标签的新 View

ios - 我如何在 swift 的扩展中声明 NSLayoutConstraint 类型的变量

iphone - 自定义 View 中 subview 布局的自定义方法,或使用layoutSubviews/layoutIfNeeded

ios - 按下 UIButton 后 Swift UILabel 以编程方式更新

ios - interstitialWillDismissScreen 只被调用一次