美文网首页iosiOS Developer
使用 Swift 实现上传头像

使用 Swift 实现上传头像

作者: CyrusCao | 来源:发表于2016-10-21 14:14 被阅读565次

在 App 开发中经常会遇到用户上传头像或者添加图片的需求。通常,用户可以选择拍照或者从系统相册上传两种方式。iOS 中为这个功能提供了 UIImagePickerController 这个类来实现对图片选取的功能。

第一步:实现 UIImagePickerControllerDelegate 协议

我们需要使用代理模式,扩展当前 ViewController 实现两个协议,UIImagePickerControllerDelegate 和 UINavigationControllerDelegate。

extension ViewController: UIImagePickerControllerDelegate {
    // 用户选取图片之后
    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
        // 参数 UIImagePickerControllerOriginalImage 代表选取原图片,这里使用 UIImagePickerControllerEditedImage 代表选取的是经过用户拉伸后的图片。
        if let pickedImage = info[UIImagePickerControllerEditedImage] as? UIImage {
            // 这里对选取的图片进行你需要的操作,通常会调整 ContentMode。
        }
        // 必须写这行,否则拍照后点击重新拍摄或使用时没有返回效果。
        picker.dismiss(animated: true, completion: nil)
    }
}

extension UserViewController: UINavigationControllerDelegate {
    // 这里可以什么都不写
}

第二步: 定义 UIImagePickerController

在 ViewController 中定义并且设置 UIImagePickerController。通常会在一个 UIAlertView 中来定义这些操作。

下面是拍照部分的代码:

// 判断相机是否可用
 if UIImagePickerController.isSourceTypeAvailable(.camera) {
    let imagePicker = UIImagePickerController()
    // 表示操作为拍照
    imagePicker.sourceType = .camera
    // 拍照后允许用户进行编辑
    imagePicker.allowsEditing = true
    // 也可以设置成视频
    imagePicker.cameraCaptureMode = .photo
    // 设置代理为 ViewController,已经实现了协议
    imagePicker.delegate = self
    // 进入拍照界面
    self.present(imagePicker, animated: true, completion: nil)
}else {
    // 照相机不可用
}

下面是从相册中选取的代码:

let imagePicker = UIImagePickerController()
// 表示操作为进入系统相册
imagePicker.sourceType = .photoLibrary
// 设置代理为 ViewController
imagePicker.delegate = self
// 允许用户编辑选择的图片
imagePicker.allowsEditing = true
// 进入系统相册界面
self.present(imagePicker, animated: true, completion: nil)

第三步:在 Info.plist 中添加权限

key: Privacy - Camera Usage Description
value: 询问用户可否调用照相机时,给用户的提示语

key: Privacy - Photo Library Usage Description
value: 询问用户可否访问系统图库时,给用的提示语

相关文章

  • 使用 Swift 实现上传头像

    在 App 开发中经常会遇到用户上传头像或者添加图片的需求。通常,用户可以选择拍照或者从系统相册上传两种方式。iO...

  • H5 Android文件上传

    直接利用file input实现上传,浏览器和Android下都可以正常使用 基于vue的头像上传 Android...

  • Retrofit上传头像

    uploadHeadIcon 实现了上传头像的功能

  • php 最基本的文件上传

    1 , 在实际的项目开发中,基本都会有头像上传这个功能,实现php的上传功能,就需要使用到move_uploade...

  • Android实现头像上传

    Android实现本地上传图片并设置为圆形头像 Android实现类似换QQ头像功能(图片裁剪) android上...

  • iOS开发项目中使用七牛保存用户头像

    在公司的项目中使用七牛来进行用户头像的存储。 上传头像的实现步骤如下 首先从后端获取QN的key和token 然后...

  • Swift 绘制圆形头像

    使用 Swift 绘制圆形头像,代码如下: Swift2.3 版本的写法(写在 UIImage 的扩展中) Swi...

  • iOS-->使用NSURLSession实现文件上传

    使用NSURLSession实现文件上传 本demo实现的功能是使用NSURLSession实现文件的上传,需要注...

  • IOS上传图片

    一般开发上传用户头像使用AF框架就可以实现代码如下,有需要的可以参考下: AFHTTPRequestOperati...

  • iOS学习:调用相机和相册,选择图片上传

    今天在项目中要实现一个上传头像功能,点击修改头像行弹出拍照或者从相册选择来设置头像。 实现效果如下图: iOS有两...

网友评论

    本文标题:使用 Swift 实现上传头像

    本文链接:https://www.haomeiwen.com/subject/nwzquttx.html