カメラで撮影した写真を保存できるのはいいんですけど、ライブラリから写真を選択したらその選択した画像が複製されるといういらない機能まで付いてきます。カメラで撮影した写真を保存だけをできるようにして、このいらない複製機能を消したいです。どうすればいいでしょうか?
Swift
1 2import UIKit 3 4//画像を選択 5extension TapViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate { 6 7 //画像を選んだ時の処理 8 func imagePickerController(_ picker: UIImagePickerController,didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { 9 10 let selectedImage = info[UIImagePickerController.InfoKey.originalImage] as! UIImage 11 12 self.imageView.image = image 13 UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil) 14 15 //サイズを圧縮する 16 // let resizedImage = selectedImage.scale(byFactor: 0.4) 17 18 image = selectedImage 19 20 var imageHeight = image.size.height 21 var imageWidth = image.size.width 22 23 let navigationBarHeight = navigationController?.navigationBar.frame.height 24 let width = self.view.frame.width 25 let height = self.view.frame.height 26 let centerX = self.view.center.x 27 let centerY = self.view.center.y 28 let widthRatio = imageWidth 29 let heightRatio = imageHeight 30 //画像の大きさに応じてimageviewのサイズを変える 31 if imageHeight > self.view.frame.height || imageWidth > self.view.frame.width { 32 print("1") 33 imageWidth = width 34 imageHeight = width*heightRatio/widthRatio 35 36 } else if imageHeight > self.view.frame.height { 37 print("2") 38 imageHeight = height 39 imageWidth = height*widthRatio/heightRatio 40 41 } else if imageWidth > self.view.frame.width { 42 print("3") 43 imageWidth = width 44 imageHeight = width*heightRatio/widthRatio 45 46 } else { 47 } 48 49 imageView.contentMode = UIView.ContentMode.scaleToFill 50 imageView.frame.size = CGSize(width: imageWidth, height: imageHeight) 51 //画像がnavigationbarに被らないようにする 52 if imageHeight/2 > (height/2 - navigationBarHeight!) { 53 print("4") 54 imageView.center = CGPoint(x: centerX, y: centerY + navigationBarHeight!) 55 } else { 56 print("5") 57 imageView.center = CGPoint(x: centerX, y: centerY) 58 } 59 60 imageView.image = image 61 62 picker.dismiss(animated: true, completion: nil) 63 } 64 65 66 67 // 撮影がキャンセルされた時に呼ばれる 68 func imagePickerControllerDidCancel(_ picker: UIImagePickerController) { 69 picker.dismiss(animated: true, completion: nil) 70 } 71 72 func tappedlibrary() { 73 let sourceType:UIImagePickerController.SourceType = UIImagePickerController.SourceType.photoLibrary 74 75 if UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.photoLibrary){ 76 // インスタンスの作成 77 let cameraPicker = UIImagePickerController() 78 cameraPicker.sourceType = sourceType 79 cameraPicker.delegate = self 80 self.present(cameraPicker, animated: true, completion: nil) 81 } 82 else{ 83 print("error") 84 85 } 86 } 87 88 func tappedcamera() { 89 let sourceType:UIImagePickerController.SourceType = UIImagePickerController.SourceType.camera 90 // カメラが利用可能かチェック 91 if UIImagePickerController.isSourceTypeAvailable(UIImagePickerController.SourceType.camera){ 92 // インスタンスの作成 93 let cameraPicker = UIImagePickerController() 94 cameraPicker.sourceType = sourceType 95 cameraPicker.delegate = self 96 self.present(cameraPicker, animated: true, completion: nil) 97 98 } 99 else{ 100 print("error") 101 } 102 } 103 104 @IBAction func selecteImageButton(_ sender: UITapGestureRecognizer) { 105 106 //アラート表示のために 107 let actionSheet = UIAlertController(title: "", message: "写真の選択", preferredStyle: UIAlertController.Style.actionSheet) 108 109 let tappedcamera = UIAlertAction(title: "カメラで撮影", style: UIAlertAction.Style.default, handler: { 110 (action: UIAlertAction!) in 111 self.tappedcamera() 112 }) 113 114 let tappedlibrary = UIAlertAction(title: "ライブラリから選択", style: UIAlertAction.Style.default, handler: { 115 (action: UIAlertAction!) in 116 self.tappedlibrary() 117 }) 118 119 let cancel = UIAlertAction(title: "キャンセル", style: UIAlertAction.Style.cancel, handler: { 120 (action: UIAlertAction!) in 121 print("キャンセル") 122 }) 123 124 actionSheet.addAction(tappedcamera) 125 actionSheet.addAction(tappedlibrary) 126 actionSheet.addAction(cancel) 127 128 present(actionSheet, animated: true, completion: nil) 129 130 } 131 132}
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/12/02 06:42
2019/12/02 06:46
2019/12/02 06:54
2019/12/02 07:31
2019/12/03 00:17