使用图像选择器将照片保存到 2 个不同的 uiimageview (swift 3)

use image picker to save photos to 2 different image view (swift3)

我希望用户使用 2 个不同的图像视图和按钮(左侧和右侧)拍摄 2 张​​不同的照片。我知道如何使用 imagepicker Delegate 来做到这一点,但不知道如何使用 2 个不同的图像视图。两个 imageviews 将有不同的照片,并使用不同的按钮拍照。基本上左右两边是没有关系的。

代码

    import UIKit

class _vc: UIViewController {

@IBOutlet var leftImage: UIImageView!
@IBOutlet var rightImage: UIImageView!


override func viewDidLoad() {
    super.viewDidLoad()

    // Do any additional setup after loading the view.
}

@IBAction func takePhotoLeft(_ sender: Any) {
}
@IBAction func takePhotoRgith(_ sender: Any) {
}}

一个快速的方法是在 viewController 上设置一个变量来跟踪最近按下的按钮。您甚至可以使用像 Int 这样简单的东西,例如 var imagePickerButton: Int = 0,然后根据需要将数字分配给按钮。我喜欢使用 tag 属性,所以我不必考虑它。如果这样做,在您的按钮操作中,您可以在执行 imagePicker 启动代码之前说 self.imagePickerButton = sender.tag

然后,在您的 didFinishPicking... 方法中,您可以使用 switch 或 if/else 来决定填充哪个 imageView,例如

switch self.imagePickerButton {
case 0:
    leftImageView.image = image
case 1:
    rightImageView.image = image
etc.
}

有很多方法可以处理这个问题,但这是一个非常简单快捷的方法。

而不是设置 tag,简单的选择是在您的 ViewController 中创建一个类型 UIImageView 名称 currentImageView 的实例 属性,然后在您的左右按钮操作将 currentImageView 设置为 leftImagerightImage。之后在 didFinishPickingMediaWithInfo 中将所选图像设置为此 currentImageView.

var currentImageView: UIImageView?

@IBAction func takePhotoLeft(_ sender: Any) {
    self.currentImageView = self.leftImage
    //ImagePicker code
}

@IBAction func takePhotoRgith(_ sender: Any) {
    self.currentImageView = self.rightImage
    //ImagePicker code
}

现在,在您的 didFinishPickingMediaWithInfo 方法中,只需将图像设置为此 currentImageView

func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
    let image = info[UIImagePickerControllerOriginalImage] as! UIImage
    self.currentImageView?.image = image
    self.dismiss(animated: true)
}