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

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

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

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

Swift

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

Q&A

1回答

2336閲覧

UICollectionViewのcellに、imageが拡大表示されてしまいます。

otakaraya

総合スコア0

Xcode

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

Swift

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

0グッド

0クリップ

投稿2020/06/17 07:26

編集2020/06/17 08:35

前提・実現したいこと

UICollectionViewのcellに、imageが拡大表示されてしまいます。
CollectionViewは、横スクロールでページングさせています。
ページングは問題なく出来ているのですが、cellの中が拡大表示に
なってしまっています。原因がわかりません。
イメージ説明

該当のソースコード

func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { return imageArray.count } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { guard let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath as IndexPath) as? viewCell else { return UICollectionViewCell() } for subview in cell.contentView.subviews{ subview.removeFromSuperview() } cell.imageView.image = imageArray[indexPath.row] cell.imageView.contentMode = .scaleAspectFit cell.imageView.clipsToBounds = true cell.contentView.addSubview(cell.imageView) return cell } ---------------------------------------------------------------------------- cellのコード import UIKit class viewCell: UICollectionViewCell { @IBOutlet weak var imageView: UIImageView! }

試したこと

どの様に修正したら良いのでしょうか?
ご指導、よろしくお願いいたします。

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

xcode Version 10.1

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

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

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

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

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

guest

回答1

0

UIImageViewのレイアウト設定が足りてないだけだと思います。

自分ならこんなかんじですが、これで動きますか?

swift

1// generateCell 2func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 3 let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "Cell", for: indexPath as IndexPath) as! ViewCell 4 let image: UIImage = imageArray[indexPath.row] 5 cell.setImage(image) 6 return cell 7} 8 9// CollectionViewCell 10 11class ViewCell: UICollectionViewCell { 12 13 // レイアウトはInterfaceBuilder上で設定する 14 @IBOutlet weak var imageView: UIImageView! 15 16 override func awakeFromNib() { 17 super.awakeFromNib() 18 imageView.contentMode = .scaleAspectFit 19 imageView.clipsToBounds = true 20 } 21 22 func setImage(_ image: UIImage) { 23 imageView.image = Image 24 } 25 26}

コードでやるやる部分とXIB?Storyboard?でやる部分を分けてかんがえてみてください。
className、identifierはスネークケースに変えてます。

サンプル

投稿2020/06/17 09:11

編集2020/06/17 12:20
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

otakaraya

2020/06/17 10:24

お忙しい中、ご指導ありがとうございます。XIBは使用していません。ご教示いただいたコードにしてみましたが、let imageName: String〜の箇所には「Cannot convert value of type 'UIImage' to specified type 'String'」のエラーメッセージが、また、cell.setImageName(imageName)の箇所には、「Value of type 'viewCell' has no member 'setImageName'」が出てしまいました。
退会済みユーザー

退会済みユーザー

2020/06/17 10:44 編集

UIImageViewのレイアウトはStoryboard上で設定してね。
otakaraya

2020/06/17 11:10

何度もご足労をおかけして申し訳ありません。imageViewを、ユーティリティエリアのcontentModeでAspectFitに選択し直してみましたが、何も変わりませんでした。
退会済みユーザー

退会済みユーザー

2020/06/17 11:35

回答の方法で実行する場合なのですが、 UIImageViewのレイアウトをStoryboardで設定していますか? レイアウトとはUIImageViewの大きさをAutoLayoutで設定したことはありますかということなんですが。 なにかUIImageViewの大きさ、位置をご自身で設定した記憶はありますか?
otakaraya

2020/06/17 11:38

また、編集し直していただいたコード使用しましたが、cellのimageは拡大表示のままでした。iosのバグでしょうか?皆目見当がつきません。
otakaraya

2020/06/17 11:41

返答が前後してしまいましたが、UIImageViewの大きさはcellと同じサイズで、AutoLayout設定しています。
otakaraya

2020/06/17 12:01

追記。UIImageViewはcellの上に置いています。
退会済みユーザー

退会済みユーザー

2020/06/17 12:21

じゃあ、セルの大きさの設定はされていますか? サンプル上げときました参考にでもしてください?
otakaraya

2020/06/17 12:36

cellの大きさは設定してあります。色々とお考えいただき、有難うございました。
退会済みユーザー

退会済みユーザー

2020/06/17 12:43

サンプル内のことですが、imageViewのcontentModeの設定は変更すればきちんと反映されますね…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問