swift3.0之UIImagePickerController的使用和注意事项
来源:互联网 发布:python 字典是什么 编辑:程序博客网 时间:2024/05/16 12:46
在oc中使用UIImagePickerController只要设置好代理、写代理方法就行了,但是在swift中编译没有什么问题,但是运行的时候会报错,选择一张图片,会显示库是私有的,不能访问,遇到这样的问题很好的解决办法就是在info.plist文件中添加Privacy - Photo Library Usage Description 和 Privacy - Camera Usage Description 两个字符串属性
下面是代码片段
1.在类中设置代理方法
UIImagePickerControllerDelegate,UINavigationControllerDelegate
2.UIImagePickerController对象的创建
lazy var imagePicker: UIImagePickerController = { let imgPicker = UIImagePickerController() imgPicker.modalPresentationStyle = UIModalPresentationStyle.fullScreen imgPicker.allowsEditing = true imgPicker.delegate = self return imgPicker }()
3.图片获取的选择模式,以及UIImagePickerController的代理方法实现
func selectHeadImageFromCamera() { let alertVC = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet) let cancelAction = UIAlertAction(title: "取消", style: .default) { (action) in } weak var weakSelf = self let cameralAction = UIAlertAction(title: "拍照", style: .default) { (action) in weakSelf?.clickedButtonAtIndex(index: 0) } let pictureAction = UIAlertAction(title: "相册", style: .default) { (action) in weakSelf?.clickedButtonAtIndex(index: 1) } alertVC.addAction(cameralAction) alertVC.addAction(pictureAction) alertVC.addAction(cancelAction) self.present(alertVC, animated: true, completion: nil) } //#pram mark --UIImagePickerControllerDelegate func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) { self.hideHud() self.showHud(in: self.view, hint: "上传中...") let image:UIImage = info[UIImagePickerControllerOriginalImage] as! UIImage picker.dismiss(animated: true, completion: nil) if image != nil { self.updateUserHeadPortrait(image: image) } else { self.hideHud() self.showHint("上传失败") } } func updateUserHeadPortrait(image:UIImage){ let newImage = self.imageWithImage(image: image, scaleToSize: CGSize(width: 150.0, height: 150.0)) weak var weakSelf = self if newImage != nil { weak var weakSelf = self NetService.apiUpdateUserHeadPortait(newImage, success: { (success) in weakSelf?.imageView?.image = newImage ManagerTool.shared.currentUserInfo.babyHeadPortrait = success weakSelf?.hideHud() weakSelf?.showHint("上传成功") }, failure: { (failure) in weakSelf?.hideHud() weakSelf?.showHint("上传失败") }) } } func imageWithImage(image:UIImage,scaleToSize:CGSize) -> UIImage { UIGraphicsBeginImageContext(scaleToSize) image.draw(in: CGRect(x: 0, y: 0, width: scaleToSize.width, height: scaleToSize.height)) let newImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() return newImage } func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { self.imagePicker.dismiss(animated: true, completion: nil) } func clickedButtonAtIndex(index:Int) { if index == 0 { print("\(index)") if Platform.isSimulator { self.hideHud() self.showHint("模拟器不支持拍照功能") } else { if UIImagePickerController.isSourceTypeAvailable(UIImagePickerControllerSourceType.camera){ self.imagePicker.sourceType = UIImagePickerControllerSourceType.camera if UIImagePickerController.isCameraDeviceAvailable(UIImagePickerControllerCameraDevice.front){ self.imagePicker.cameraDevice = UIImagePickerControllerCameraDevice.front } self.imagePicker.mediaTypes = [kUTTypeImage as String] self.present(self.imagePicker, animated: true, completion: nil) } } } else if index == 1{ self.imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary self.imagePicker.mediaTypes = [kUTTypeImage as String]; self.present(self.imagePicker, animated: true, completion: nil) } }
阅读全文
0 0
- swift3.0之UIImagePickerController的使用和注意事项
- Swift3.0之hidesBottomBarWhenPushed的使用和注意事项
- UIAlertController和UIImagePickerController的使用
- iOS之摄像头的使用-----UIImagePickerController
- Swift3.0学习之ScrollView的简单使用
- Swift3.0学习之CollectionView的简单使用
- swift3.0 coredata 的使用
- Swift3.0 popToViewController 的使用
- Swift3.0 popToViewController 的使用
- swift3.0:sqlite3的使用
- FMDB的基本使用和解析(Swift3.0)
- 三、swift3.0字符串和集合的基本使用
- swift3.0 GCD DispatchSourceTimer注意事项
- OC学习之道:UIImagePickerController的使用,使用UIImagePickerController调用本地摄像头,本地相册
- swift3 fileprivate和open的使用
- UIImagePickerController的简化使用
- UIImagePickerController的简单使用
- UIImagePickerController的使用
- Ubuntu下如何默认字符界面启动(默认tty1)
- 面向对象高级1
- 剑指offer面试题[5]-从尾到头打印链表
- CF
- Python 正则表达式(Regex)
- swift3.0之UIImagePickerController的使用和注意事项
- 看看排序算法
- 链表求和I
- Xlistview上拉刷新下拉加载
- 这段时间面试WEB前端的面试问题总结
- ble_led_blink的笔记
- 2.017、06、22自学之路
- python编码转换
- C++中类的访问权限针对的是类而不是对象!(为什么类中的函数可以访问对象的私有成员?)