質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1726閲覧

cocoapodsでインストールしたCropViewControllerが使えない

progpen123

総合スコア3

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/09/18 06:39

編集2020/09/18 06:41

前提・実現したいこと

画像をアルバムから選んで、その写真のある部分切り取って表示させるアプリの作成中
cocoapodsをインストールして "CropViewController"を使おうと思ったのですが
うまくビルドすることができませんでした。

podsfile

発生している問題・エラーメッセージ

No such module 'CropViewController'

該当のソースコード

swift

1import UIKit 2import CropViewController 3 4 5class ViewController: UIViewController, UIImagePickerControllerDelegate & UINavigationControllerDelegate/*, CropViewControllerDelegate*/ { 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional setup after loading the view. 10 } 11 12 @IBOutlet weak var imageView: UIImageView! 13 14 var image:UIImage? 15 16 //ボタンを押すとimagePickerが表示され、トリミングしたい画像を選ぶ。 17 @IBAction func presentCropViewButton(_ sender: UIButton) { 18 19 setImagePicker() 20 } 21 22 func setImagePicker(){ 23 24 let picker = UIImagePickerController() 25 picker.sourceType = .photoLibrary 26 picker.delegate = self 27 present(picker, animated: true, completion: nil) 28 } 29 30 func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) { 31 32 guard let pickerImage = (info[UIImagePickerController.InfoKey.originalImage] as? UIImage) else { return } 33 34 //CropViewControllerを初期化する。pickerImageを指定する。 35 let cropController = CropViewController(croppingStyle: .default, image: pickerImage) 36 37 cropController.delegate = self 38 39 //AspectRatioのサイズをimageViewのサイズに合わせる。 40 cropController.customAspectRatio = imageView.frame.size 41 42 //今回は使わない、余計なボタン等を非表示にする。 43 cropController.aspectRatioPickerButtonHidden = true 44 cropController.resetAspectRatioEnabled = false 45 cropController.rotateButtonsHidden = true 46 47 //cropBoxのサイズを固定する。 48 cropController.cropView.cropBoxResizeEnabled = false 49 50 //pickerを閉じたら、cropControllerを表示する。 51 picker.dismiss(animated: true) { 52 53 self.present(cropController, animated: true, completion: nil) 54 } 55 } 56 57 func cropViewController(_ cropViewController: CropViewController, didCropToCircularImage image: UIImage, withRect cropRect: CGRect, angle: Int) { 58 //トリミング編集が終えたら、呼び出される。 59 updateImageViewWithImage(image, fromCropViewController: cropViewController) 60 } 61 62 func updateImageViewWithImage(_ image: UIImage, fromCropViewController cropViewController: CropViewController) { 63 //トリミングした画像をimageViewのimageに代入する。 64 self.imageView.image = image 65 66 cropViewController.dismiss(animated: true, completion: nil) 67 } 68 69}

試したこと

・エラーメッセージが出たまま Command B でビルドを行なったが build failedとなった
.xcworkspaceをクリックして開いてビルドを行いましたがだめでした

補足情報(FW/ツールのバージョンなど)

xcode 11.7

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

TsukubaDepot

2020/09/18 07:18

拡張子が xcodeproj  の方を開いていないでしょうか。 開くのは xcworkspace の方となります。
progpen123

2020/09/18 16:41

質問ありがとうございます。 自分と似た質問をしている人がいてそれを参考にし白い方を開いているので 間違えていないはずです!
guest

回答1

0

ベストアンサー

「pod 'CropViewController'」の記載場所が異なっているのが原因ってことはないでしょうか?
現在はUITestsターゲットの中に記述しているので、「pod 'CropViewController'」を以下に移動してから再度Podインストール&ビルド確認してみてください。

移動場所:質問文1つめの添付画像の、7行目あたりに記述を移動する。

2020.09.20追記

トリミング画像が反映されない問題ですが、トリミング編集完了後に利用するDelegateメソッドが違うかと思います。
こちら側では以下の様に変更することで、画像が反映される様になりましたのでご確認ください。

Swift

1// 誤っている方 2// 現在はメソッドの引数に、”didCropToCircularImage”と付いた方のDelegateメソッドを利用している 3// (”Circular”と付いている) 4func cropViewController(_ cropViewController: CropViewController, didCropToCircularImage image: UIImage, withRect cropRect: CGRect, angle: Int) { 5 //トリミング編集が終えたら、呼び出される。 6 updateImageViewWithImage(image, fromCropViewController: cropViewController) 7} 8 9// 正しい方 10// メソッドの引数が、”didCropToImage”という方のDelegateメソッドを利用する様に変更する 11func cropViewController(_ cropViewController: CropViewController, didCropToImage image: UIImage, withRect cropRect: CGRect, angle: Int) { 12 //トリミング編集が終えたら、呼び出される。 13 updateImageViewWithImage(image, fromCropViewController: cropViewController) 14}

投稿2020/09/18 08:05

編集2020/09/19 05:10
tsuki01

総合スコア1751

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

progpen123

2020/09/18 16:54

回答ありがとうございます。 おっしゃって頂いたとおり pod 'CropViewController'の記載場所を移動したら無事動きました。 ターゲットの中に書いたらいけないんですね、勉強になりました。 ベストアンサーに選ばさせて頂きます。ありがとうございました!
progpen123

2020/09/18 17:17

追加で質問なのですが アプリを起動させると写真を選んでCropまではできるのですが Doneと押しても写真が表示されなくて困っています。 どこかのプログラムミスでしょうか?
tsuki01

2020/09/19 05:13

回答に追記しましたが、プログラムに誤りがあります。 トリミング編集完了後に呼び出すDelegateメソッドが違うため、修正すれば写真が表示されるようになるかと思います。
progpen123

2020/09/19 05:35

なるほど!写真の形によってDelegateメソッドが異なるのですね。 無事治りました! 最後まで親切なご対応ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問