答案 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
sourceType
或photoLibrary
实例化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)