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

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

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

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

iOS

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

Xcode

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

Swift

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

Q&A

解決済

3回答

3412閲覧

【Swift5】Storyboadで設定したUITableViewのヘッダの高さを自動調節したい。

Masa_teratail

総合スコア9

TableView

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

iOS

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

Xcode

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

Swift

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

0グッド

0クリップ

投稿2020/05/21 03:14

Storyboadで、UITableViewの最上段にUIViewを使ってヘッダを作成しました。ヘッダには、UILabelでテキストを表示しています。
ヘッダの下には、TableViewCellを配置しています。

ヘッダのUILabelのフォントサイズの変更に合わせて、ヘッダの高さを自動調節したいと考えていますが、AutoLayoutを設定できず、高さを自動調節できない状態です。

UITableViewでヘッダ内のテキストに合わせて、ヘッダの高さを自動調節する方法があればご教示いただきたく思います。

よろしくお願いいたします。

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

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

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

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

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

thyda.eiqau

2020/05/21 07:50

ラベルにテキストをセットしたあとにsizeToFitしてやるとか、幅とフォントがわかっているなら高さを計算してframeにセットしてやるとか、やりようはあると思いますが、試したこととどううまく動かないかをご提示されたほうがよいと思います。
Masa_teratail

2020/05/21 08:47

ご指摘ありがとうございました。質問の不備、失礼いたしました。 1)フォントサイズについて 今回、アクセシビリティに配慮し、フォントにDynamic Typeを使用しています。 そのため、iOSの環境によりフォントサイズが変わるため、使用環境のフォントサイズに合わせてUITableViewのヘッダの高さが自動調節されるようにしたいと考えています。 2)試したこと StoryboardでAutoLayoutを設定しました。 UILabel単独の場合、AutoLayoutがうまく機能し、Dynamic Typeのフォントサイズに合わせてUILabelのサイズが自動調整されます。 しかし、今回のようにUITableViewのヘッダとしてUIViewを配置し、その中にUILabelを置くとヘッダの高さが自動調整されません。 原因は、ヘッダとして配置しているUIViewの高さが不変なためだと思います。 UIViewにもAutoLayoutを設定できればいいのですが、Add new constraintsを確認しても選択不可のため設定することができない状態です。 以上、 よろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2020/05/22 11:40

どのような方法でヘッダとして設置しているかを掲示していただけないでしょうか? 参考にされたページのurlでも結構です
Masa_teratail

2020/05/22 13:36

ご質問いただき、ありがとうございます。また、質問内容の記述が不十分で失礼しました。 ヘッダは、StoryBoard上でTableViewと一番目のCellの間にUIViewをドラッグ&ドロップすることでセットしています。 今回はセットしたヘッダ内(UIView内)にUILabelを設置しています。 以下のサイトのコメント欄を参考にさせていただきました。 https://qiita.com/nakamurau1@github/items/301b69522c32254617ad よろしくお願いいたします。
guest

回答3

0

1)ウェブで見つけた以下のコードでヘッダを設定し、UILabelを組み合わせて実装してみましたが、やはり高さの自動調整は機能しませんでした。なお、cellのStyleをBasicとし、そのままテキストを挿入した場合も自動調整は機能しませんでした。

Swift5

1 let headerCell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "TableHeaderCell")! 2 let headerView: UIView = headerCell.contentView 3 tableView.tableHeaderView = headerView

2)結論として、自分の必要としていたヘッダは、スクロール時の上部固定を必要としていなかったため、以下のコードでUITableViewの1行目をヘッダにする形で対応しました。
なお、UILabelを設置するとクラッシュしたため、cellのStyleをBasicとし、そのままテキストを挿入しました。

Swift5

1 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 2 if indexPath.row == 0 { 3 let cell = tableView.dequeueReusableCell(withIdentifier: "HeaderCell", for: indexPath as IndexPath) 4 return cell 5 } 6 7以下省略

たぶん姑息な方法だとは思いますが、御礼を兼ねて、結果をご報告させていただきます。

投稿2020/05/25 04:35

Masa_teratail

総合スコア9

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

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

0

1)ウェブで見つけた以下のコードでヘッダを設定し、UILabelを組み合わせて実装してみましたが、やはり高さの自動調整は機能しませんでした。なお、cellのStyleをBasicとし、そのままテキストを挿入した場合も自動調整は機能しませんでした。

Swift5

1 let headerCell: UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "TableHeaderCell")! 2 let headerView: UIView = headerCell.contentView 3 tableView.tableHeaderView = headerView

2)結論として、自分の必要としていたヘッダは、スクロール時の上部固定を必要としていなかったため、以下のコードでUITableViewの1行目をヘッダにする形で対応しました。
なお、UILabelを設置するとクラッシュしたため、cellのStyleをBasicとし、そのままテキストを挿入しました。

Swift5

1 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 2 3 if indexPath.row == 0 { 4 5 let cell = tableView.dequeueReusableCell(withIdentifier: "HeaderCell", for: indexPath as IndexPath) 6 7 return cell 8 9 } 10 11以下省略

たぶん姑息な解決方法だとは思いますが、御礼を兼ねて、結果をご報告させていただきます。

投稿2020/05/25 04:30

Masa_teratail

総合スコア9

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

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

Masa_teratail

2020/05/25 04:42

サーバエラーが表示されたため再度投稿しましたが、二重になってしまったようです。。
guest

0

ベストアンサー

参考にされたURLのセクションヘッダーの追加方法は(自分の不勉強だと思いますが)初めてみました。
現状の方法でも設定が有効になるかもしれませんが、
通常の設定方法?であればヘッダーの想定高さが有効になると思いますのでそのへんを変更してみたらどうでしょうか?

イメージ説明

ヘッダの設定方法は自分はこうやってますってサンプル

投稿2020/05/22 14:02

編集2020/05/22 14:04
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Masa_teratail

2020/05/22 14:50 編集

サンプルをご提示いただき、ありがとうございました。 コードでヘッダを設置してみたいと思います。
Masa_teratail

2020/05/25 04:29

初学者で不勉強なため、.xibファイル等の取り扱いをきちんと理解できず、上手く使うことができませんでした。。。せっかくきれいなコードを例示いただいたのに、恐縮です。。。 私のスキルでもできそうな解決方法を試行錯誤したところ、下記の方法でひとまず自己解決しましたので、ご報告させていただきます。 どうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問