[解決済み] テーブルビューのセクションヘッダーの高さを、オートレイアウトで動的に取得することは可能でしょうか?
質問
iOS 8 の新機能として、行の推定高さを設定し、自動レイアウトを使用してセル内に要素をレイアウトするだけで、100% 動的なテーブル ビュー セルを得ることができます。コンテンツの高さが増加すると、セルも高さが増加します。これは非常に便利ですが、テーブル ビューのセクション ヘッダーで同じことを実現できるのでしょうか?
例えば
UIView
で
tableView:viewForHeaderInSection:
を追加し、さらに
UILabel
サブビューを追加し、ビューに対してラベルの自動レイアウト制約を指定し、ラベルの内容に合わせてビューの高さを増加させることができます。
tableView:heightForHeaderInSection:
?
のドキュメントは
viewForHeaderInSection
のドキュメントには次のように書かれています: "このメソッドは tableView:heightForHeaderInSection: も実装されているときのみ正しく機能します。
それができない場合、この動作を模倣する最良の方法は何でしょうか。
どのように解決するのですか?
これは可能です。iOS 8 で導入された動的なセルの高さと並んで新しいものです。
これを行うには、セクション ヘッダーの高さに自動寸法を使用し、必要であれば、セクション ヘッダーの推定高さを提供することができます。これは、テーブル ビューが選択されたときに Interface Builder で行うか、プログラムによって行うことができます。
tableView.sectionHeaderHeight = UITableView.automaticDimension
tableView.estimatedSectionHeaderHeight = 38
//You can use tableView(_:heightForHeaderInSection:) and tableView(_:estimatedHeightForHeaderInSection:)
//if you need to support different types of headers per section
次に
tableView(_:viewForHeaderInSection:)
を実装し、Auto Layout を使用して、希望するようにビューを制約します。必ず、完全に
UITableViewHeaderFooterView
's
contentView
のように、特に上から下へ、高さが制約によって決定されるようにします。以上です。
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = UITableViewHeaderFooterView()
headerView.translatesAutoresizingMaskIntoConstraints = false
headerView.backgroundView = {
let view = UIView()
view.backgroundColor = myCustomColor
return view
}()
let headerLabel = UILabel()
headerLabel.translatesAutoresizingMaskIntoConstraints = false
headerLabel.text = "Hello World"
headerView.contentView.addSubview(headerLabel)
NSLayoutConstraint.activate([
headerLabel.leadingAnchor.constraint(equalTo: headerView.contentView.leadingAnchor, constant: 16),
headerLabel.trailingAnchor.constraint(equalTo: headerView.contentView.trailingAnchor, constant: -16),
headerLabel.topAnchor.constraint(equalTo: headerView.contentView.topAnchor, constant: 12),
headerLabel.bottomAnchor.constraint(equalTo: headerView.contentView.bottomAnchor, constant: -12)
])
return headerView
}
関連
-
iOS classic error Undefined symbols for architecture XXX:
-
IOS8 Development Guide Error Thread 1: signal SIGABRT
-
[解決済み] Xcode 6.3 - 現在の iOS Development 証明書または保留中の証明書要求がすでにあります。
-
[解決済み] キーボードがあるときに、UITextFieldを編集開始時に上に移動させるには?
-
[解決済み] Objective-Cでデリゲートを作成するにはどうしたらいいですか?
-
[解決済み] iOSシミュレータでスクリーンショットを撮る
-
[解決済み] iPhone 5の画面解像度に対応したアプリを開発・移行するには?
-
[解決済み] Swift 3, 4, 5 で dispatch_after GCD を書くにはどうしたらいいですか?
-
[解決済み] ビューを非表示にしたときに、オートレイアウトで他のビューを移動するには?
-
[解決済み】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 型の捕捉できない例外で終了する理由 エラー
-
[iOS]コンパイルエラー:ld: アーキテクチャ x86_64 のシンボルが見つかりません。
-
iOS classic error Undefined symbols for architecture XXX:
-
IOSラーニングノート「このクラスはxxxのキーバリューコーディングに対応していません」問題解決
-
IOS8 Development Guide Error Thread 1: signal SIGABRT
-
[解決済み] アトミック属性と非アトミック属性の違いは何ですか?
-
[解決済み] 制約条件の変更をアニメーションで表現するには?
-
[解決済み] 文字列の長さを取得する
-
[解決済み] NSの接頭辞はどういう意味ですか?
-
[解決済み] UILabelで複数行のテキストを表示する