gpt4 book ai didi

具有多个 imageView 输出的 iOS 相机

转载 作者:行者123 更新时间:2023-11-29 00:59:44 25 4
gpt4 key购买 nike

在我的 FirstVC 中,我了解如何使用 UIImagePickerController、加载相机、拍照、在 1 个 imageView 内显示它(仍在 FirstVC 内),然后通过prepareForSegue 将该图像传递到 SecondVC 内的 imageView 进行显示那边。

我需要帮助的是在 FirstVC 中有多个 imageView,这样一旦用户拍摄第一张图片,它就会加载到第一个 imageView,然后第二张图片加载到第二个 imageView,第三张图片加载到第三个 imageView,第四张图片加载到第四个 imageView。之后会出现一条警告,提示用户无法再拍摄照片,并且用户可以按 nextSceneButton 进入 SecondVC,SecondVC 将显示他们刚刚拍摄的 4 张选定图像。

我一直使用 UIImagePickerController,但我刚刚熟悉 AVFoundation。我应该使用 AVFoundation 还是 UIImagePicker 来完成此任务?

这是我的 UIImagePickerController 代码,FirstVC 中只有一个 imageView:

import UIKit

class FirstViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {

@IBOutlet weak var imageView: UIImageView!
@IBOutlet weak var nextSceneButton: UIButton!
//nextSceneButton is connected in StoryBoards and triggers the segue to the SecondVC


let imagePicker = UIImagePickerController()

var image: UIImage?



//MARK:- Custom Function
func noCamera(){
let alertVC = UIAlertController(title: "No Camera", message: "Sorry, this device has no camera", preferredStyle: .Alert)
let okAction = UIAlertAction(title: "OK", style:.Default, handler: nil)
alertVC.addAction(okAction)
presentViewController(alertVC, animated: true, completion: nil)
}


override func viewDidLoad() {
super.viewDidLoad()
imagePicker.delegate = self
}


override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

//MARK:- Buttons

@IBAction func libraryButtonPressed(sender: UIButton) {
imagePicker.allowsEditing = false
imagePicker.sourceType = UIImagePickerControllerSourceType.PhotoLibrary
presentViewController(imagePicker, animated: true, completion: nil)
}


@IBAction func photoButtonPressed(sender: UIButton) {

if (UIImagePickerController.availableCaptureModesForCameraDevice(UIImagePickerControllerCameraDevice.Rear) != nil){
imagePicker.allowsEditing = false
imagePicker.sourceType = UIImagePickerControllerSourceType.Camera
imagePicker.cameraCaptureMode = UIImagePickerControllerCameraCaptureMode.Photo
imagePicker.cameraDevice = UIImagePickerControllerCameraDevice.Rear
presentViewController(imagePicker, animated: true, completion: nil)
}else{
noCamera()
}
}


//MARK:- ImagePickerController Delegates

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage
self.image = chosenImage
imageView.image = self.image
dismissViewControllerAnimated(true, completion: nil)
}


func imagePickerControllerDidCancel(picker: UIImagePickerController) {
picker.dismissViewControllerAnimated(true, completion: nil)
}


//MARK:- Segue

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == “fromPhotoVcToSecondVC” {
let secondVC = segue.destinationViewController as! SecondViewController
secondVC.image = self.image
}
}

}//end class

最佳答案

您可以添加一个计数属性并将图像保存在一个数组中:

var count = 0
var imageViews:[UIImageView]

每次你拍照并调用委托(delegate)时加载相应的 ImageView :

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) {
let chosenImage = info[UIImagePickerControllerOriginalImage] as! UIImage
self.imageViews[count].image = chosenImage
count +=1
dismissViewControllerAnimated(true, completion: nil)
}

然后,如果所有照片都已拍摄,则提醒用户:

@IBAction func photoButtonPressed(sender: UIButton) {
if count < imageViews.count {
//present UiimagePicker
} else {
// alert no more pictures allowed
}
}

关于具有多个 imageView 输出的 iOS 相机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37152328/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com