[iOS]iOS10中通过摄像头或者从相册中获取图片的方法

现在的App里一般都会有设置头像这个功能,网上介绍的大多是在旧版iOS上面使用Objective-C实现的。那么在最新的iOS 10中,使用最新的Swift3如何实现呢?下面通过实际代码介绍。

设置Storyboard

Storyboard的布局非常简单,一个UIImageView,两个Button分别是从摄像头获取图片和从相册获取图片。

设置

初始化

开始前需要给ViewController添加两个delegates,然后绑定UIImageView,添加一个UIImagePickerController的实例,代码如下:

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    
    @IBOutlet var imageView: UIImageView!
    
    let imagePicker = UIImagePickerController()

其次,还需要设置我们的ViewController作为UIImagePickerController的delegate:

override func viewDidLoad() {
    super.viewDidLoad()

    imagePicker.delegate = self
}

通过摄像头获取图片

通过上面的设置和初始化,接下来就可以通过iPhone的摄像头获取图片了,我们将其封装在一个函数里面:

    func openCamera(){
        if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera) {

            imagePicker.sourceType = UIImagePickerControllerSourceType.camera;
            imagePicker.allowsEditing = true
            self.present(imagePicker, animated: true, completion: nil)
        }
        
    }
通过摄像头获取图片

从相册中获取图片

从相册中获取图片的方法和通过摄像头获取图片的方法非常类似,代码如下:

    func openPhoto(){
        if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.photoLibrary) {
            
            imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary;
            imagePicker.allowsEditing = true
            self.present(imagePicker, animated: true, completion: nil)
        }
    }
从相册中获取图片

显示获取到的图片

通过以上两个方法,我们获取到了想要的图片,最后就是将其显示在UIImageView中,代码如下:

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        imageView.image = info[UIImagePickerControllerEditedImage] as! UIImage
        self.dismiss(animated: true, completion: nil)
    }

imagePickerController是一个回调方法,当我们选择好图片之后,系统会调用这个方法,info是一个字典,UIImagePickerControllerEditedImage这个key值对应的value就是取到的编辑后的图片,为UIImage类型。

显示获取到的图片

附:didFinishPickingMediaWithInfo字典对应的key:value。

let UIImagePickerControllerMediaType: String

Specifies the media type selected by the user.

let UIImagePickerControllerOriginalImage: String

Specifies the original, uncropped image selected by the user.

let UIImagePickerControllerEditedImage: String

Specifies an image edited by the user.

let UIImagePickerControllerCropRect: String

Specifies the cropping rectangle that was applied to the original image.

let UIImagePickerControllerMediaURL: String

Specifies the filesystem URL for the movie.

let UIImagePickerControllerReferenceURL: String

The Assets Library URL for the original version of the picked item.

let UIImagePickerControllerMediaMetadata: String

Metadata for a newly-captured photograph.

let UIImagePickerControllerLivePhoto: String

The Live Photo representation of the selected or captured photo.

本文作者:小池laucherish
本文出处:http://www.jianshu.com/p/302a632950a0
转载请在开头注明作者详细信息本文出处

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1阶最后10天,总得分 分(完成1项 1分) 1.5点起床√ 2.温开水一杯√ 3.蛋白质饮品一杯 4.慢跑五公里...
    天使6班8组79号杨蕊Mary阅读 1,193评论 0 2
  • 有一件事虽已过去了好几天,却在我的脑海中不停地浮现。 一天下课,我刚好到办公室休息,一同事的女儿因为校服裤...
    大脸小胖阅读 9,481评论 0 10
  • 1. 时针铿锵踏步迈向新的一天,监护仪精准的滴答声此起彼伏着。此时的我独坐在急诊医生办,一阵倦意袭来。 忙完了这一...
    黛鱼阅读 3,633评论 0 0
  • 看着那云雾缭绕的山峦和开始泛黄的层层麦田,这是一片多么美丽宁静的风景啊!可是在这宁静表象内部,人们的活动却又...
    湖田瓦瓦阅读 3,952评论 2 2

友情链接更多精彩内容