问题描述
我使用UIImagePickerController通过iPhone的相机拍照。
I use UIImagePickerController to take a photo by camera of iPhone.
我想要显示两张拍照和选择一张照片。
I want to show two "take a photo" and "choose a photo".
我的代码
imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = .camera
//imagePicker.sourceType = .PhotoLibrary
presentViewController(imagePicker, animated: true, completion: nil)
我试图使用 imagePicker.sourceType = .Camera
和 imagePicker .sourceType = .PhotoLibrary
一起做这个,但它不起作用...
I tried to use imagePicker.sourceType = .Camera
and imagePicker.sourceType = .PhotoLibrary
together to do this, but it doesn't work...
谢谢
推荐答案
导入 UIImagePickerControllerDelegate
并创建一个变量来分配UIImagePickerController
var imagePicker = UIImagePickerController()
并设置
imagePicker.delegate = self
。
Import UIImagePickerControllerDelegate
and create a variable to assign UIImagePickerControllervar imagePicker = UIImagePickerController()
and set imagePicker.delegate = self
.
创建一个操作表以显示Cam的选项时代'和'照片库'。
Create a action sheet to display options for 'Camera' and 'Photo library'.
点击按钮点击操作:
@IBAction func buttonOnClick(_ sender: UIButton)
{
self.btnEdit.setTitleColor(UIColor.white, for: .normal)
self.btnEdit.isUserInteractionEnabled = true
let alert = UIAlertController(title: "Choose Image", message: nil, preferredStyle: .actionSheet)
alert.addAction(UIAlertAction(title: "Camera", style: .default, handler: { _ in
self.openCamera()
}))
alert.addAction(UIAlertAction(title: "Gallery", style: .default, handler: { _ in
self.openGallary()
}))
alert.addAction(UIAlertAction.init(title: "Cancel", style: .cancel, handler: nil))
/*If you want work actionsheet on ipad
then you have to use popoverPresentationController to present the actionsheet,
otherwise app will crash on iPad */
switch UIDevice.current.userInterfaceIdiom {
case .pad:
alert.popoverPresentationController?.sourceView = sender
alert.popoverPresentationController?.sourceRect = sender.bounds
alert.popoverPresentationController?.permittedArrowDirections = .up
default:
break
}
self.present(alert, animated: true, completion: nil)
}
func openCamera()
{
if(UIImagePickerController .isSourceTypeAvailable(UIImagePickerControllerSourceType.camera))
{
imagePicker.sourceType = UIImagePickerControllerSourceType.camera
imagePicker.allowsEditing = true
self.present(imagePicker, animated: true, completion: nil)
}
else
{
let alert = UIAlertController(title: "Warning", message: "You don't have camera", preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
self.present(alert, animated: true, completion: nil)
}
}
func openGallary()
{
imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary
imagePicker.allowsEditing = true
self.present(imagePicker, animated: true, completion: nil)
}
从下载示例项目。
这篇关于如何在swift中同时为相机和照片库提供UIImagePickerController的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!