第一步
添加协议
UIImagePickerControllerDelegate,UINavigationControllerDelegate
第二步
添加选择方式
let sexActionSheet = UIAlertController.init(title: nil, message: nil, preferredStyle: .actionSheet)
weak var weakSelf = self
let sexNanAction = UIAlertAction(title: "从相册中选择", style: UIAlertActionStyle.default){ (action:UIAlertAction)in
weakSelf?.initPhotoPicker()
//填写需要的响应方法
}
let sexNvAction = UIAlertAction(title: "拍照", style: UIAlertActionStyle.default){ (action:UIAlertAction)in
weakSelf?.initCameraPicker()
//填写需要的响应方法
}
let sexSaceAction = UIAlertAction(title: "取消", style: UIAlertActionStyle.cancel){ (action:UIAlertAction)in
//填写需要的响应方法
}
sexActionSheet.addAction(sexNanAction)
sexActionSheet.addAction(sexNvAction)
sexActionSheet.addAction(sexSaceAction)
self.present(sexActionSheet, animated: true, completion: nil)
第三步
//MARK: - 相机
//从相册中选择
func initPhotoPicker(){
let photoPicker = UIImagePickerController()
photoPicker.delegate = self
photoPicker.allowsEditing = true
photoPicker.sourceType = .photoLibrary
//在需要的地方present出来
self.present(photoPicker, animated: true, completion: nil)
}
//拍照
func initCameraPicker(){
if UIImagePickerController.isSourceTypeAvailable(.camera){
let cameraPicker = UIImagePickerController()
cameraPicker.delegate = self
cameraPicker.allowsEditing = true
cameraPicker.sourceType = .camera
//在需要的地方present出来
self.present(cameraPicker, animated: true, completion: nil)
} else {
print("不支持拍照")
}
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
//获得照片
let image:UIImage = info[UIImagePickerControllerEditedImage] as! UIImage
// 拍照
if picker.sourceType == .camera {
//保存相册
UIImageWriteToSavedPhotosAlbum(image, self, #selector(image(image:didFinishSavingWithError:contextInfo:)), nil)
}
personImage.image = image
self.dismiss(animated: true, completion: nil)
}
@objc func image(image:UIImage,didFinishSavingWithError error:NSError?,contextInfo:AnyObject) {
if error != nil {
print("保存失败")
} else {
print("保存成功")
}
}