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

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

新規登録して質問してみよう
ただいま回答率
85.49%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Q&A

解決済

1回答

3070閲覧

UICollectionViewCellの高さをUIStackViewで設定する

Glycerin

総合スコア12

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

0グッド

0クリップ

投稿2018/04/17 06:48

UICollectionViewUICollectionViewCellの高さを設定するときにはcollectionView:layout:sizeForItemAtIndexPath:を使用しますが、ここでUICollectionViewCellUIStackViewが入っている時に高さを設定するにはどうしたら良いでしょうか?

collectionView:layout:sizeForItemAtIndexPath:UICollectionViewCellを呼び出し、UIStackViewを呼び出してcell.containerStackView.frame.size.heightで0が帰ってきます。

Objective

1- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout 2 sizeForItemAtIndexPath:(NSIndexPath *)indexPath { 3 StackCollectionViewCell *cell = (StackCollectionViewCell *)[_collectionView cellForItemAtIndexPath:indexPath]; 4 5 NSLog(@"StackView height %f", cell.containerStackView.frame.size.height); 6 // StackView height 0.0 7 // 実際のStackViewに高さ0ではなく表示されている、このメソッド時には0になる 8 9 return CGSize(320, 80); 10}

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

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

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

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

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

guest

回答1

0

ベストアンサー

UIStackViewがコンテンツを収めるための最小のサイズを知りたいということでしょうか?
であれば、systemLayoutSizeFittingを使ってみてください。

CGSize size = [stackView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];

公式ドキュメント:
https://developer.apple.com/documentation/uikit/uiview/1622624-systemlayoutsizefitting

投稿2018/04/18 06:03

編集2018/04/18 06:04
kakajika

総合スコア3131

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

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

Glycerin

2018/04/20 01:38 編集

stackViewのサイズは求められました。 collectionView:layout:sizeForItemAtIndexPath: が cellForItemAtIndexPath: より前に呼ばれるので、sizeは0になります。 サイズをセルごと可変にしたいときは、あらかじめ collectionView:layout:sizeForItemAtIndexPath: でセルの設定をする必要があるのでしょうか?
kakajika

2018/04/20 07:34

そうですね、ご自分でサイズを計算したいのでしたらxibからセルのインスタンスを生成するなどして、その上でsystemLayoutSizeFittingによってサイズを求める必要があると思います。 自分でサイズを計算せずにAutoLayoutによって自動的にセルのサイズを決定してもらうという方法もあります。「UICollectionViewCell self sizing」などで調べてみてください。少しコツがいりますが、こちらの方が手間はかかりません。
Glycerin

2018/04/21 06:44

ありがとうございます、調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問