使用图像选择器将照片保存到 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
设置为 leftImage
和 rightImage
。之后在 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)
}
我希望用户使用 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
设置为 leftImage
和 rightImage
。之后在 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)
}