斯威夫特 - 拍照或选择现有的

时间:2017-02-14 14:16:26

标签: ios swift user-interface

每当我使用应用程序并要求提供照片时,会弹出如下内容: enter image description here

是否所有人都参考了这里的实际情况?是否有一些用于此的内置函数或开源库?我似乎无法在互联网上找到任何具体资源。

谢谢!

4 个答案:

答案 0 :(得分:2)

在屏幕截图中,您会看到UIAlertController有两个操作:

let actionSheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
let cameraAction = UIAlertAction(title: "Take Photo", style: .default, handler: nil)
let photoLibraryAction = UIAlertAction(title: "Choose Existing", style: .default handler: nil)

actionSheet.addAction(camerAction)
actionSheet.addAction(photoLibraryAction)

要访问照片库或使用相机拍摄新照片,您可能需要查看UIImagePickerController

答案 1 :(得分:1)

您必须通过检查相机源是否可用来动态构建UIActionController,然后将相关操作添加到控制器:

let actionController = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)

if UIImagePickerController.isSourceTypeAvailable(.camera) {
    let action = UIAlertAction(title: "Take Photo", style: .default, handler: { _ in
        print("User tapped 'Take Photo'")
    })
    actionController.addAction(action)
}

您还需要为"选择现有"创建另一个操作。和"取消"按钮。

然后只需显示当前视图控制器中的动作控制器。

答案 2 :(得分:0)

图书馆似乎正在展示UIAlertController UIAlertControllerStyle枚举actionSheet。根据选择,然后使用UIImagePickerController sourceTypephotoLibrary实例化camera

这是为用户获取图像的标准行为。

答案 3 :(得分:0)

带有取消按钮的完整代码,例如您的屏幕截图

    let actionSheet = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
    let cameraAction = UIAlertAction(title: "Take Photo", style: .default, handler: nil)
    let photoLibraryAction = UIAlertAction(title: "Choose Existing", style: .default, handler: nil)
    let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)

    actionSheet.addAction(cameraAction)
    actionSheet.addAction(photoLibraryAction)
    actionSheet.addAction(cancelAction)

    self.present(actionSheet, animated: true, completion: nil)