返回

相册和相机调用指南:iOS UIImagePickerController快速上手

Android

用 UIImagePickerController 在 iOS 中处理图像和视频

1. 导入必要的库

在使用 UIImagePickerController 之前,需要导入必要的库:

import UIKit
import MobileCoreServices

2. 创建 UIImagePickerController 实例

要创建一个 UIImagePickerController 实例,使用:

let picker = UIImagePickerController()

3. 设置 UIImagePickerController 属性

设置 UIImagePickerController 的属性:

  • sourceType: 指定图片或视频来源(相册或摄像头)
  • mediaTypes: 指定媒体类型(照片、视频或两者兼有)
  • allowsEditing: 允许用户编辑选择的媒体
  • delegate: 指定 UIImagePickerController 的委托

4. 呈现 UIImagePickerController

使用以下代码呈现 UIImagePickerController:

present(picker, animated: true, completion: nil)

5. 处理所选媒体

当用户选择媒体时,UIImagePickerController 的委托会收到以下方法:

  • imagePickerController(_:didFinishPickingMediaWithInfo:): 选择媒体后调用
  • imagePickerController(_:didCancel:): 取消选择媒体后调用

6. 示例代码

以下代码示例演示如何从相册中选择照片:

import UIKit
import MobileCoreServices

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

    override func viewDidLoad() {
        super.viewDidLoad()

        let picker = UIImagePickerController()
        picker.sourceType = .photoLibrary
        picker.mediaTypes = [kUTTypeImage]
        picker.allowsEditing = true
        picker.delegate = self
        present(picker, animated: true, completion: nil)
    }

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
        let image = info[.editedImage] as! UIImage
        UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
        picker.dismiss(animated: true, completion: nil)
    }

    func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
        picker.dismiss(animated: true, completion: nil)
    }
}

常见问题解答

1. 如何限制用户只选择照片或视频?
修改 mediaTypes 数组以仅包含所需类型,例如 [kUTTypeImage] 或 `[kUTTypeMovie]”。

2. 如何从摄像头拍摄照片或视频?
sourceType 设置为 .camera,并根据需要设置 mediaTypes 数组。

3. 如何允许用户同时编辑照片和视频?
allowsEditing 设置为 true

4. 如何将选定的照片或视频上传到服务器?
使用 UIImageJPEGRepresentation()AVAssetExportSession 导出选定的媒体,然后使用 HTTP 请求将其上传到服务器。

5. 如何处理用户取消选择媒体?
imagePickerControllerDidCancel(_:) 委托方法中,取消任何正在进行的操作或关闭 UIImagePickerController。