使用ImagePickerController拍摄视频/照片,并在不同的视图上使用它们



有人可以指导我如何在另一个视图中使用刚刚从图像选择器拍摄的照片或视频的正确方向吗?

假设我在按下相机按钮时从主视图调用它。我想拍照或录像,然后使用它。我想在另一个视图中执行此操作,我可以拥有不同的自定义按钮,这些按钮允许我将其共享到 Facebook,您有什么以及回到我的主要视图。我将如何做到这一点?

这是我到目前为止的代码。

//
//  ViewController.swift
//  Cop Watch
//
//  Created by James Combs on 4/16/15.
//  Copyright (c) 2015 James's Source Code. All rights reserved.
//
import Foundation
import UIKit
class MainViewController: UIViewController, CameraViewControllerDelegate,  UITextViewDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
@IBOutlet internal var photosButton: UIBarButtonItem!
@IBOutlet internal var cameraButton: UIBarButtonItem!
@IBOutlet internal var goodBadInput: UITextField!
@IBOutlet internal var stoppedInput: UITextField!
@IBOutlet internal var ethnicityInput: UITextField!
@IBOutlet internal var nameInput: UITextField!
internal var imagePickerController: UIImagePickerController?
internal var camViewController: CameraViewController?
internal let camSourceError = "Camera is not available"
private var hasCancelledVideo: Bool = false
private var hasCancelledPhoto: Bool = false
private let cameraViewIdent = "CameraViewController"
private let photoViewIdent = "PhotoViewController"

    // Tried doing things here but unsure how to use this correctly for now with image picker
func cameraViewControllerDidFinish(controller: CameraViewController, imagePicker: UIImagePickerController) {
    /*imagePicker.delegate = self
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera) {
        imagePicker.sourceType = UIImagePickerControllerSourceType.Camera
    }
    imagePicker.allowsEditing = true
    controller.presentViewController(imagePicker, animated: true, completion: nil)
    controller.navigationController?.popViewControllerAnimated(true)*/
}
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
    self.dismissViewControllerAnimated(true, completion: nil)
}
func imagePickerControllerDidCancel(picker: UIImagePickerController) {
    self.dismissViewControllerAnimated(true, completion: nil)
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == self.cameraViewIdent {
            // Get a reference to the camera view controller - I THINK I COULD COMBINE THESE 2 IN ONE
        if let destinationVC = segue.destinationViewController as? CameraViewController {
        }
    }
    else if segue.identifier == self.photoViewIdent {
            // Get a reference to the photo view controller
        if let destinationVC = segue.destinationViewController as? PhotosViewController {

        }
    }
}
@IBAction func didPressPhotosButton(sender: AnyObject) {
}
@IBAction func didPressCameraButton(sender: AnyObject) {
    self.imagePickerController = UIImagePickerController()
    self.imagePickerController!.delegate = self
    if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.Camera) {
        self.imagePickerController!.sourceType = UIImagePickerControllerSourceType.Camera
    }
    var availableMediaTypes = UIImagePickerController.availableMediaTypesForSourceType(self.imagePickerController!.sourceType)
    self.imagePickerController!.mediaTypes = availableMediaTypes!
    self.imagePickerController!.allowsEditing = false
    self.presentViewController(self.imagePickerController!, animated: true, completion: nil)

}
override func viewDidLoad() {
    super.viewDidLoad()

}
override func viewDidAppear(animated: Bool) {
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

/*
    UITextField Delegates
*/
override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {
    self.view.endEditing(true)
}
func textFieldShouldReturn(textField: UITextField!) -> Bool {
    goodBadInput.resignFirstResponder()
    stoppedInput.resignFirstResponder()
    ethnicityInput.resignFirstResponder()
    nameInput.resignFirstResponder()
    return true
}

}

imagePickerController: didFinishPickingMediaWithInfo:中使用此代码

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [NSObject : AnyObject]) {
    imagePicker.dismissViewControllerAnimated(true, completion: nil)
    var photo = info[UIImagePickerControllerOriginalImage] as? UIImage
}

使用密钥UIImagePickerControllerMediaURL获取视频网址,以防捕获视频

最新更新