在Swift 3中使用UIImagePickerController

通常,在iOS应用程序中,要求用户从其设备中选择图像,然后将其用作整个应用程序中自己的化身。 在本文中,我们讨论了如何在Swift 3中配置和使用UIImagePickerController

我们将设置一个显示默认图像的UI组件。 用户可以单击该默认图像,然后用从其设备中选取的另一张替换该默认图像。

在实际的应用程序中,选择图像后,我们会将其发送到服务器,但是为了本教程的简单起见,我们只需要选择图像-压缩图像(谁想在服务器上存储巨大的图像),然后提取图片信息以备将来使用。

如果您已经了解UIImagePickerController并想绕过长度说明,则继续并在文章末尾选择最终代码。

1.设置组件

2.将profileImage与操作关联以选择图像表单设备

使用addTargetprofileImage与自定义函数相关联

现在运行该应用程序,单击profileImage ,提示信息提示您是否允许它访问照片。 单击“确定”以允许,现在您已在照片中-选择照片,对其进行编辑,然后按“选择”以完成。 imagePickerController将解散,并携带您选择的照片,接下来什么也没发生……。

现在是时候决定如何处理选定的图像

此时,我们需要决定如何处理选定的图像。 在此应用中,我们将默认图像替换为我们选择的图像。

首先,使用UINavigationControllerDelegateUIImagePickerControllerDelegate扩展当前的ViewController ,然后设置imagePickerController.delegate = self

之后,可以调用imagePickerController didFinishPickingMediaWithInfo方法,在这里我们可以获取所选图像的详细信息。 现在是在XCode上设置一个断点以查看其内部info好时机

现在是时候用选定的图像更新profileImage

代码说明:

  • 我们首先检查所选照片是否已编辑(缩放,裁剪…),如果是,则将profileImage设置为editedImage ,否则使用originalImage
  • 将选定的图像四舍五入,并放入1px的黑色边框
  • 关闭imagePickerController ,返回到初始屏幕。 现在,您将看到默认图像替换为新图像。

3.提交图片

在实际应用中,这是开发人员要将图像发送到服务器的关键点。 取决于服务器技术,处理上传图像可能会有所不同。 在本文中,我们将介绍压缩图像并使其仅准备上传

现在是时候照顾一下submitButton

submitButton与处理动作相关联

profileImage相似,我们告诉submitButton在单击时调用方法handleSubmit.touchUpInside

至此,我们想在handleSubmit内部

  • 压缩图像使其更小→保存数据🗜
  • 将图像发送到月球🚀

这里我们使用UIImageJPEGRepresentation来获取profileImage的数据,该函数带有compressionQuality参数。

生成的JPEG图像的质量,表示为0.0到1.0之间的值。 值0.0表示最大压缩率(或最低质量),而值1.0表示最小压缩率(或最佳质量)。” — Apple文档

4.带有注释的完整代码