別の画面から遷移してきた時にカメラロールから画像を読み込んで、IMAGEVIEWに表示するアプリを作成しています。
以下のようにソースコードを書いたところ、ゆっくりと実行していくと特に問題なく動作するのですが、カメラロールで画像を選択する時に連打してしまうと、アプリ自体が初期の画面へ戻ってしまい、再度画像を読み込もうとすると全体が黒い画面になってしまいます。
この場合、何が原因として考えられるのでしょうか?
よろしくお願いします。
swift
1 2class MainViewController: UIViewController,UIPickerViewDelegate,UIPickerViewDataSource { 3 @IBOutlet weak var imageView:UIImageView! 4 var uiImage:UIImage! 5 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 9 //画像読込 10 if UIImagePickerController.isSourceTypeAvailable(.photoLibrary) { 11 // 写真を選ぶビュー 12 let photoView = UIImagePickerController() 13 // 写真の選択元をカメラロールにする 14 photoView.sourceType = .photoLibrary 15 // デリゲート 16 photoView.delegate = self 17 // ビューに表示 18 self.present(photoView, animated: true) 19 } 20 } 21} 22 23extension MainViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate { 24 // 写真を選んだ後に呼ばれる処理 25 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { 26 27 //画像サイズ 28 let IMAGE_MAX_SIZE = 1000.0 29 30 // 選択した写真を取得する 31 let tmpImage = info[.originalImage] as! UIImage 32 33 var tmpSize = Double(tmpImage.size.width) 34 35 if(Double(tmpImage.size.width) > IMAGE_MAX_SIZE || Double(tmpImage.size.height) > IMAGE_MAX_SIZE){ 36 if(tmpImage.size.width >= tmpImage.size.height){ 37 tmpSize = IMAGE_MAX_SIZE 38 }else{ 39 tmpSize = IMAGE_MAX_SIZE*Double((tmpImage.size.width/tmpImage.size.height)) 40 } 41 } 42 // ビューに表示する 43 let resize_tmpImage:UIImage = resize(image: tmpImage,width: tmpSize) 44 45 imageView.image = resize_tmpImage 46 if(uiImage.size.width>0){ 47 image_flg = true 48 } 49 // 写真を選ぶビューを引っ込める 50 self.dismiss(animated: true) 51 } 52}
回答1件
あなたの回答
tips
プレビュー