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

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

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

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

Swift

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

Q&A

0回答

959閲覧

swift TableViewのimageの大きさを固定する方法

Natsu_hill

総合スコア0

TableView

TableView(UITableView)とは、リスト形式で表示するコントロールで、ほとんどのアプリに使用されています。画面を「行」に分けて管理し、一般的には各行をタップした際に詳細画面に移動します。

Swift

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

0グッド

0クリップ

投稿2021/08/11 07:51

前提・実現したいこと

SwiftのtableViewにおいて画像の大きさを一定にする方法について質問します。

該当のソースコード

swift

1 // Cellに値を設定するdatasourceメソッド 2 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 3 // 今回表示を行う、Cellオブジェクト(1行)を取得する 4 let cell = tableView.dequeueReusableCell(withIdentifier: "okashiCell", for: indexPath) 5 // お菓子のタイトル設定 6 cell.textLabel?.text = okashiList[indexPath.row].name 7 // お菓子画像を取得 8 if let imageData = try? Data(contentsOf: okashiList[indexPath.row].image) { 9 // 正常に取得できた場合は、UIImageで画像オブジェクトを生成して、Cellにお菓子画像を設定 10 cell.imageView?.image = UIImage(data: imageData) 11 12 // サイズを定義する 13 let Resize:CGSize = CGSize.init(width: 80, height: 80) 14 15 //UIImageを指定のサイズにリサイズ 16 _ = cell.imageView?.image!.resize(size: Resize) 17 18 } 19 20 // 設定済みのCellオブジェクトを画面に反映 21 return cell 22 23 } 24 25//UIImage リサイズ 26extension UIImage { 27 func resize(size _size: CGSize) -> UIImage? { 28 let widthRatio = _size.width / size.width 29 let heightRatio = _size.height / size.height 30 let ratio = widthRatio < heightRatio ? widthRatio : heightRatio 31 32 let resizedSize = CGSize(width: size.width * ratio, height: size.height * ratio) 33 34 UIGraphicsBeginImageContextWithOptions(resizedSize, false, 0.0) // 変更 35 draw(in: CGRect(origin: .zero, size: resizedSize)) 36 let resizedImage = UIGraphicsGetImageFromCurrentImageContext() 37 UIGraphicsEndImageContext() 38 39 return resizedImage 40 } 41}

試したこと

イメージ説明
写真のように画像の大きさがバラバラなので、
これらの画像をリサイズして一定にするコードを書いて実行しても変わりません。
わかる方よろしくお願いいたします。

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

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

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

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

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

hoshi-takanori

2021/08/11 07:58

画像をリサイズするのではなく、UIImageView のサイズを固定して Content Mode を Aspect Fit とかにすべきかと。
Natsu_hill

2021/08/11 08:12 編集

Content Mode を Aspect Fit とかにするというのは cell.imageView!.contentMode = .scaleAspectFit を記述するということなのでしょうか。 もしそうでしたら、 // サイズを定義する let Resize:CGSize = CGSize.init(width: 80, height: 80) //UIImageを指定のサイズにリサイズ _ = cell.imageView?.image!.resize(size: Resize) ではなく代わりに cell.imageView!.contentMode = .scaleAspectFit の一文を記述するということでしょうか。 よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問