2016-10-03 4 views
1

Этот код позволяет получить доступ к моей фотогалерее на симуляторе iPhone в Xcode. Когда я помещаю его на свой iPad, я могу получить доступ к камере, но не к фотогалерее. Я хотел бы, чтобы изображение отображалось на фотографиях камеры, если вы выбираете или загружаете изображение из фотогалереи, если хотите.Как получить подборщик изображений (swift 3), чтобы переключиться назад и 4-й между фотогалереей и камерой.

import UIKit 

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate { 

let picker = UIImagePickerController() 
@IBOutlet weak var iv: UIImageView! 

@IBAction func cameraf(_ sender: UIBarButtonItem) { 

    if UIImagePickerController.isSourceTypeAvailable(.camera) { 
     picker.allowsEditing = false 
     picker.sourceType = UIImagePickerControllerSourceType.camera 
     picker.cameraCaptureMode = .photo 
     picker.modalPresentationStyle = .fullScreen 
     present(picker,animated: true,completion: nil) 
    } else { 
     noCamera() 
    }} 

@IBAction func photolibaryss(_ sender: UIBarButtonItem) { 
    picker.allowsEditing = false 
    picker.sourceType = .photoLibrary 
    picker.mediaTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary)! 
    picker.modalPresentationStyle = .popover 
    present(picker, animated: true, completion: nil) 
    picker.popoverPresentationController?.barButtonItem = sender 
} 

func noCamera(){ 
    let alertVC = UIAlertController(
     title: "No Camera", 
     message: "Sorry, this device has no camera", 
     preferredStyle: .alert) 
    let okAction = UIAlertAction(
     title: "OK", 
     style:.default, 
     handler: nil) 
    alertVC.addAction(okAction) 
    present(
     alertVC, 
     animated: true, 
     completion: nil) 
} 
override func viewDidLoad() { 
    super.viewDidLoad() 
    picker.delegate = self 
} 
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) 
{ 
    var chosenImage = UIImage() 
    chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage 
    iv.contentMode = .scaleAspectFit 
    iv.image = chosenImage 
    dismiss(animated:true, completion: nil) 
} 
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 
    dismiss(animated: true, completion: nil) 
} 
override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
}} 

ответ

0

Вы можете сделать UIAlertController, который будет состоять из двух действий предупреждений фотобиблиотеки и камеры, а затем добавить функции строк кода из photolibaryss и cameraf на соответствующие действия предупреждения.

пусть тревога = UIAlertController (название: ноль, сообщение: "Выберите источник", preferredStyle: UIAlertControllerStyle.Alert)

alert.addAction(UIAlertAction(title: "Camera", style: UIAlertActionStyle.Default) { (result : UIAlertAction) -> Void in 
     print("Camera selected") 
     //Code for Camera 
     //cameraf 
    }) 
alert.addAction(UIAlertAction(title: "Photo library", style: UIAlertActionStyle.Default) { (result : UIAlertAction) -> Void in 
     print("Photo selected") 
     //Code for Photo library 
     //photolibaryss 
    }) 
self.present(alert, animated: true, completion: nil) 
0

Update в ответе выше. Он отлично работает, но имеет несколько опечаток - нужно закрыть круглые скобки на addActions. Xcode 8.2 также изменил presentViewController для представления.

let alert = UIAlertController(title: nil, message: "Choose your source", preferredStyle: UIAlertControllerStyle.Alert) 

alert.addAction(UIAlertAction(title: "Camera", style: UIAlertActionStyle.Default) { (result : UIAlertAction) -> Void in 
     print("Camera selected") 
     //Code for Camera 
     //cameraf 
    }) 
alert.addAction(UIAlertAction(title: "Photo library", style: UIAlertActionStyle.Default) { (result : UIAlertAction) -> Void in 
     print("Photo selected") 
     //Code for Photo library 
     //photolibaryss 
    }) 
self.present(alert, animated: true, completion: nil) 

 Смежные вопросы

  • Нет связанных вопросов^_^