2016-04-24 2 views
0

Я очень новичок в использовании swift, и у меня очень мало опыта в кодировании. Я только начал изучать онлайн в udemy плюс дополнительные уроки.Как я могу получить камеру, чтобы сделать снимок, а затем обрезать? Я получаю ошибку краха

В настоящее время я пытаюсь сделать снимок, а затем, как только изображение будет снято, я могу увеличивать и уменьшать масштаб, чтобы начать обрезку. В настоящее время это то, что у меня есть, но я получаю ошибку при сбое, когда пытаюсь запустить симулятор.

import UIKit 

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIScrollViewDelegate { 

var imageView = UIImageView() 

@IBOutlet var camera: UIButton! 

@IBOutlet weak var photoLibrary: UIButton! 

@IBOutlet weak var scrollView: UIScrollView! 

@IBOutlet var imageDisplay: UIImageView! 

@IBAction func photoLibraryAction(sender: AnyObject) { 

    let picker = UIImagePickerController() 
    picker.delegate = self 
    picker.sourceType = .PhotoLibrary 

    presentViewController(picker, animated: true, completion: nil) 





} 


@IBAction func cameraAction(sender: AnyObject) { 
    let picker = UIImagePickerController() 
    picker.delegate = self 
    picker.sourceType = .Camera 

    presentViewController(picker, animated: true, completion: nil) 



} 




func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    imageDisplay.image = info[UIImagePickerControllerOriginalImage] as? UIImage; dismissViewControllerAnimated(true, completion: nil) 



} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    scrollView.delegate = self 

    imageView.frame = CGRectMake(0, 0, scrollView.frame.size.width, scrollView.frame.size.height) 
    imageView.image = UIImage(named: "image") 
    imageView.userInteractionEnabled = true 

    scrollView.addSubview(imageView) 

    let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.loadImage(_:))) 
    tapGestureRecognizer.numberOfTapsRequired = 1 
    imageView.addGestureRecognizer(tapGestureRecognizer) 


} 

func loadImage (recognizer:UITapGestureRecognizer){ 
    let imagePicker = UIImagePickerController() 
    imagePicker.delegate = self 
    imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary 

    self.presentViewController(imagePicker, animated: true, completion: nil) 

} 


func imagePickController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 
    let image = info[UIImagePickerControllerOriginalImage] as! UIImage 

    imageView.image = image 
    imageView.contentMode = UIViewContentMode.Center 
    imageView.frame = CGRectMake(0, 0, image.size.width, image.size.height) 

    scrollView.contentSize = image.size 

    let scrollViewFrame = scrollView.frame 
    let scaleWidth = scrollViewFrame.size.width/scrollView.contentSize.width 
    let scaleHeight = scrollViewFrame.size.height/scrollView.contentSize.height 
    let minScale = min(scaleHeight, scaleWidth) 

    scrollView.minimumZoomScale = minScale 
    scrollView.maximumZoomScale = 1 
    scrollView.zoomScale = minScale 

    centerScrollViewContents() 

    picker.dismissViewControllerAnimated(true, completion: nil) 

} 

func centerScrollViewContents(){ 
    let boundsSize = scrollView.bounds.size 
    var contentsFrame = imageView.frame 

    if contentsFrame.size.width < boundsSize.width{ 
     contentsFrame.origin.x = (boundsSize.width - contentsFrame.size.width)/2 
    }else{ 
     contentsFrame.origin.x = 0 
    } 

    if contentsFrame.size.height < boundsSize.height { 

     contentsFrame.origin.y = (boundsSize.height - contentsFrame.size.height)/2 
    }else{ 
     contentsFrame.origin.y = 0 
    } 

    imageView.frame = contentsFrame 

} 

func scrollViewDidZoom(scrollView: UIScrollView) { 
    centerScrollViewContents() 
} 

func viewForZoomingInScrollView(scrollView: UIScrollView) -> UIView? { 
    return imageView 
} 

    // Do any additional setup after loading the view, typically from a nib. 
} 

func didReceiveMemoryWarning() { 

    // Dispose of any resources that can be recreated. 
} 

и это ошибка

2016-04-24 14:00:30.148 My Camera App[3127:1150898] -[UIImageView setDelegate:]: unrecognized selector sent to instance 0x13ed3a2d0 
2016-04-24 14:00:30.150 My Camera App[3127:1150898] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIImageView setDelegate:]: unrecognized selector sent to instance 0x13ed3a2d0' 
*** First throw call stack: 
(0x181e36e38 0x18149bf80 0x181e3dccc 0x181e3ac74 0x181d38d1c 0x10002be24 0x10002c378 0x186f80b40 0x186f80744 0x186f8749c 0x186f84988 0x186ffae8c 0x1872262bc 0x18722a500 0x187227674 0x1837d77ac 0x1837d7618 0x1837d79c8 0x181ded124 0x181decbb8 0x181dea8b8 0x181d14d10 0x186fef834 0x186fe9f70 0x10002fb0c 0x1818b28b8) 
libc++abi.dylib: terminating with uncaught exception of type NSException 
(lldb) 
+1

Какая линия, которая рушится? – EmilioPelaez

ответ

0

Если вы тестируете этот код в тренажере для метода cameraAction он не будет работать, вы должны использовать устройство для этого, потому что тренажер не имеет камеру ,

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