[iPhone] UICollectionView で マス目表示

アルバムのような写真アプリによく使われますが、画像をマス目に配置するには UICollectionView を使います。基本的な設定をテストしてみます。
 

Swift 5.1
Xcode 11.3.1

 

UICollectionView

 
UICollectionView の設定は UITableView と似ているので、これを理解できればUITableViewも作りやすくなります。
また、セルのためのクラスを作成する方法もありますが、ここではTagを使った簡単な方法を採用しました。
 

 

storyboard に Collection View を設定

 
Collection View の配置
storyboard にて Collection View を View Controller に配置します。


 
特別なレイアウトを想定していないのであれば、Collection View はSafe Area に入れておいた方が分かりやすいです。
 

 
Collection View Cell 確認
基本的にはCollection View Cell が既にできています。(以前にここが問題だったのでデフォルトで入っているのでしょう)
ちなみに、ユーティリティーのライブラリーから持ってくることもできます
「View」「Collection View」「Collection View Cell」
この後UIImageViewやUILabelを入れるのでCellの大きさを調整しておきます。
 

 
Cell の ID設定
Collection Cellを選択して、Collection Reusable View にある  Identifier を例えば「Cell」と設定します。これは後でコードの記述で使います。またエラーになったらここを忘れていないか確認しましょう。
 
スクリーンショット 2014-02-23 20.00.11
 
UIImageViewとUILabelの配置
この Cell の中に、ユーティリティー・エリアのライブラリーからUIImageView と UILabel を持ってきて置きます。Cellが小さいときはCellを広げておき、UIImageViewはCellに一杯に入れておきます。
(好みですが、Labelの背景を半透明に設定しました。)
 

 
Tagの設定
 
UIImageView の View Tag を「1」に設定します。
Tag番号は1から始めます。
 

 
UILabel の Tag を「2」にセットします。
 

 

画像の設定

 
サムネイル画像を集めて、名前に@2xを追加したファイルにして、Assets.xcassets に配置します。@3xファイルも作成したいところですが、サムネイルなので大丈夫でしょう。
 
スクリーンショット 2016-04-08 14.14.53
 
ちなみに、ここで使ったファイルは全て正方形ですが、エンコード(jpg,png…)も画面サイズも異なるものです。

 

ViewController にコードを記述

 
UICollectionViewDataSource, UICollectionViewDelegate を設定
 
ViewController.swift

 

ViewController と CollectionView の紐付け

 
storyboard に戻ってCollection View を選択して
dataSource -> View Controller
delegate -> View Controller
とそれぞれ結び紐付けします。
 

 
ビルドして実行すると
 

 
とりあえず表示はされていますが、イマイチな感じですね、セルのサイズがスクリーンと合っていません

 

Cellの調整

 
UICollectionViewDelegateFlowLayout を使うと画面サイズに合ったセルサイズを計算して合わせこみができます。
 

 
とりあえず横方向のスペースを2にしましたが、これは調整してください。
 
これを入れたコードです
ViewController.swift

 
UICollectionViewDelegateFlowLayoutの設定を忘れずに
 
Min Spacing:
 
またCellの幅が2列可能な大きさなのに1列で表示されているケースなどでは、CollectionView設定にあるFor Cells と For Lines の「Min Spacing」が大きすぎるようであれば調整してください。
 

 
AutoResizing:
古いやり方ですがこういうのもあると言うことです。UIImageViewのAutoResizingの設定を図のようにします。これによりCellが矩形で横いっぱいになったサイズに合わせることができます。またUILabelも同様の設定をしておきます。
 
 
背景を適当にGrayにしてビルド実行しました。
 

 
iPhone Xでもsimulatorで実行してみました。(storyboardのCollection Viewの範囲をiPhone Xで確認した方がいいかもしれません)
 

 
次はそれぞれのセルをタップしてそのセルの詳細などの情報を表示する為に画面を遷移する方法です。
 
 
関連ページ:

 
Reference:
UICollectionView – UIKit | Apple Developer Documentation

一人でアプリ開発の限界を感じたら

アプリ開発を始めたけどわからないところがあり、誰かに聞きたいけど周りにはそんな人はいない…あるいは、会社で働いていて日中そんなに時間をとれないなど、オンライン・スクールがいいと思います。


TECH ACADEMY
自宅にいながら1時間でプログラミング基礎を習得

こういうものではアプリ作れないと言う意見もありますが、それは結局本人のやる気があるかないかです。やる気があっても独学では突破しにくいところは教えてもらうのが一番早い。


侍エンジニア塾
侍エンジニア塾 無料体験レッスン



とても簡単なことなのに本やネットの画像だけでは分かりにくいことはあります。実際に質問してピンポイントで教えてもらうと、なんだそんなこと、と言うのがけっこうあります。


CodeCamp
~約20,000名の受講生と300社以上の導入実績~
現役エンジニアのオンライン家庭教師CodeCamp




直接(ネットで)誰か分かる人に聞いた方が早く解決して、上達も早いと思います。


Play Ground
本業と並行してやるには月額制なのがありがたいです。


無料で転職まで
これはiOSアプリ限定ではありませんが無料です
その代わり就職することを前提にしたスクールで「エンジニアになって職を得たい」のであれば手っ取り早いかもしれません

受講料無料:社会人転職コース


誤字脱字、意味不明などのご意見は 謙: e-mail まで
ブックマークしておくと便利です このエントリーをはてなブックマークに追加
Twitter:


シェアする

  • このエントリーをはてなブックマークに追加

フォローする