[解決済み] UICollectionView - 水平スクロール、水平レイアウト?
質問
を持っています。
UIScrollView
で、アイコンのグリッドをレイアウトしています。 iOSのSpringboardのレイアウトを想像してもらえば、かなり正解に近いと思います。 Springboardと同じように)水平方向にページ分割されたスクロールがあります。 しかし、どうやらレイアウトがおかしいようです。 上から下に向かって項目をレイアウトしているように見えます。 その結果、表示するアイテムの数の関係で、私の最後のカラムには2行しかありません。 スプリングボードで見るような、最後のページの最後の列が2つのアイテムになるようにしたいのですが。
これを実現するには
UICollectionView
とその関連クラスは? をカスタムで書かなければならないのでしょうか?
UICollectionViewFlowLayout
?
解決方法は?
第1アプローチ
を使うのはどうでしょうか?
UIPageViewController
の配列と
UICollectionViewControllers
? には、適切な数のアイテムを取得する必要があります。
UICollectionViewController
しかし、それは難しいことではありません。スプリングボードと全く同じ外観を得ることができます。
第二のアプローチ
私はこれを考えたが、私の意見では、あなたは設定する必要があります。
self.collectionView.pagingEnabled = YES;
をサブクラス化し、独自のコレクションビューレイアウトを作成します。
UICollectionViewLayout
. カスタムレイアウトオブジェクトから
self.collectionView
ということで、コレクションビューの
frame
,
numberOfSections
と
numberOfItemsInSection:
. この情報を使って、セルの
frames
は
prepareLayout
) と
collectionViewContentSize
. カスタムレイアウトの作成に関する記事はこちらです。
- https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/CollectionViewPGforIOS/CreatingCustomLayouts/CreatingCustomLayouts.html
- http://www.objc.io/issue-3/collection-view-layouts.html
第3のアプローチ
カスタムレイアウトを作成しなくても、これ(またはその近似値)を行うことができます。追加
UIScrollView
を空白ビューで表示し、ページングを有効に設定します。スクロールビューに、コレクションビューを追加します。そして、それに幅の制約を追加し、いくつのアイテムを持っているかをコードでチェックし、それに
constant
を正しい値に設定します。
(self.view.frame.size.width * numOfScreens)
. 以下はその様子です(セル上の数字が
indexPath.row
):
https://www.dropbox.com/s/ss4jdbvr511azxz/collection_view.mov
セルの並び方に不満があるのなら、1.か2.
関連
-
[解決済み] 「シミュレータで実行すると、「インストールされているプロビジョニングプロファイルが、インストールされているiOS署名アイデンティティと一致しません。
-
[解決済み] Xcodeで "No such module "というエラーが出るが、フレームワークはある
-
[解決済み] データソースからのセルの取得に失敗しました。
-
[解決済み] 新しいアウトレット接続を挿入できませんでした。という名前のクラスの情報が見つかりませんでした。
-
[解決済み] iOS HTTP GET リクエストを実行できません -Error Domain=NSURLErrorDomain Code=-1012
-
[解決済み] Xcode 4のBundle creator OS Type code ?
-
[解決済み] SwiftでUIColor patternImageを使用して画像を中心からタイル状に配置する方法
-
[解決済み] iOS Swift 3 - UIDatePicker
-
[解決済み] UIViewAlertForUnsatisfiableConstraintsでトラップする方法は?
-
[解決済み】UIScrollView Scrollable Content Size Ambiguity
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 libc++abi.dylib: NSException 型のキャッチできない例外で終了する (lldb)
-
[解決済み】"宣言はファイルスコープでのみ有効 "について
-
[解決済み] Xcode は、[バンドル ID] に一致する iOS App Store プロビジョニングプロファイルを見つけられませんでした。
-
[解決済み] Xcode 10でコマンドCompileSwiftが0以外の終了コードで失敗する [重複] 。
-
[解決済み] "CFNetwork SSLHandshake failed (-9806)" の解決方法について
-
[解決済み] 新しい Swift クラスの void 関数で予期しない非 void の戻り値が発生する。
-
[解決済み] このアクションは完了できませんでした。再試行 (-22421)
-
[解決済み] あなたのリクエストはエラーを発生させました。[newNullResponse]?
-
[解決済み] 'CGPointMake' は swift で使用できません [重複] 。
-
[解決済み] iOS Swift 3 - UIDatePicker