Ios 一个UIImagePickerController,用于单个VC中的多个UIImageView
我使用一个UIImagePickerController在同一个viewController中拾取4个图像Ios 一个UIImagePickerController,用于单个VC中的多个UIImageView,ios,swift,xcode,image,uiimagepickercontroller,Ios,Swift,Xcode,Image,Uiimagepickercontroller,我使用一个UIImagePickerController在同一个viewController中拾取4个图像 我不知道该怎么问这个问题,但如果你看下面的图片,你可能会明白我的意思你可以制作一个enum来存储可能的选择器类型(配置文件或ID图片) “不会同时拾取所有图像,我指的是在拾取完第一张图像后,单击另一张图像并拾取另一张图像,然后按第二张图像以拾取另一张图像的正常方式”--这意味着什么?拾取一张图像,然后按第二张图像,我只是说,为了让问题更容易演示,您想展示一个用于拾取个人资料照片的UIIma
我不知道该怎么问这个问题,但如果你看下面的图片,你可能会明白我的意思你可以制作一个
enum
来存储可能的选择器类型(配置文件或ID图片)
“不会同时拾取所有图像,我指的是在拾取完第一张图像后,单击另一张图像并拾取另一张图像,然后按第二张图像以拾取另一张图像的正常方式”--这意味着什么?拾取一张图像,然后按第二张图像,我只是说,为了让问题更容易演示,您想展示一个用于拾取个人资料照片的
UIImagePickerController
,然后展示另一个用于拾取身份证照片?(2个单独的选择器)是的,但是如果我必须为每个会令人沮丧的图像编写另一个uiimagePickercontroller,您可以尝试使用Closure扩展几个UIKit类的框架,如果您知道如何检查所有uiimageView(driverPImg,passImg)nil
我所有的uiimageView都包含拾取的图像您想检查driverPImg
和passImg
是否包含图像吗?正如您所说,如果driverPImg!=nil{}和如果通过!=nil{}
比较'UIImageView'类型的非可选值和'nil'总是返回true
所以我尝试了如果driverPImg.image!=无(&passImg.image)无(&C)carImg.image!=nil{sendApplyBtn.backgroundColor=UIColor.delevareColor}
即使他只是检查了第一个项目,他也会立即执行代码,因此如果driverPImg.image!=无
my按钮将在不签入其余条件的情况下更改颜色
enum PictureSelectionType {
case profilePicture
case idPicture
}
class DriverAplication: UIViewController {
var pictureSelectionType = PictureSelectionType.profilePicture
/// inside ViewDidLoad...
let profileImgTapGestur = UITapGestureRecognizer(target: self, action: #selector(DriverAplication.selectProfileImage))
driverPImg.addGestureRecognizer(profileImgTapGestur)
let passImgTapGestur = UITapGestureRecognizer(target: self, action: #selector(DriverAplication.selectIDImage))
passImg.addGestureRecognizer(passImgTapGestur)
@objc func selectProfileImage() {
/// remember what the picker should return
pictureSelectionType = .profilePicture
let generator = UIImpactFeedbackGenerator(style: .light)
generator.impactOccurred()
let pickerController = UIImagePickerController()
pickerController.delegate = self
pickerController.allowsEditing = true
present(pickerController, animated: true, completion: nil)
}
@objc func selectIDImage() {
/// remember what the picker should return
pictureSelectionType = .idPicture
let generator = UIImpactFeedbackGenerator(style: .light)
generator.impactOccurred()
let pickerController = UIImagePickerController()
pickerController.delegate = self
pickerController.allowsEditing = true
present(pickerController, animated: true, completion: nil)
}
}
extension DriverAplication: UINavigationControllerDelegate, UIImagePickerControllerDelegate {
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
var returnedImage: UIImage?
if let editedImg = info[.editedImage] as? UIImage {
returnedImage = editedImg
} else if let originalImg = info[.originalImage] as? UIImage {
returnedImage = originalImg
}
if let image = returnedImage { /// unwrap the image
/// read what the selection type is
if pictureSelectionType == .profilePicture {
driverPImg.image = image
} else { /// for ID picture
passImg.image = image
}
}
dismiss(animated: true, completion: nil)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
self.dismiss(animated: true, completion: nil)
}
}