9.Swift UIImagePickerController选取图片
IOS获取本机图片的方式比Android简单得多,而且代码很干净、简洁。
1.通过调用IOS提供好的UIImagePickerController去选取图片,同样也是一个Controller,需要我们通过
presentViewController
跳转。2.如果要对UIImagePickerController选择的图片行为进行监听需要设置
UIImagePickerController.delegate: protocol<UIImagePickerControllerDelegate, UINavigationControllerDelegate>?
,可以看到这里需要实现两个协议,原来老版本中,只需要一个UIImagePickerControllerDelegate就只够了。3.然后覆写
UIImagePickerControllerDelegate.imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])
方法,就可以监听到选择的图片。
class ViewController: UIViewController,UINavigationControllerDelegate, UIImagePickerControllerDelegate {
@IBOutlet weak var iv: UIImageView!
private var imagePC:UIImagePickerController!
@IBAction func getImageBTonClick(sender: AnyObject) {
// 实例化UIImagePickerController
self.imagePC = UIImagePickerController()
// 设置UIImagePickerController数据源为:本机图片库
self.imagePC.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
// 设置实现协议的类
self.imagePC.delegate = self
self.presentViewController(self.imagePC, animated: true, completion: nil)
}
/** UIImagePickerControllerDelegate.imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject])
对UIImagePickerController选择图片监听
**/
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) {
self.iv.image = image
// 关闭UIImagePickerController
picker.dismissViewControllerAnimated(true, completion: nil)
}
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。