1

動的な高さのUITableViewヘッダーを作成したいとします。ビューには4つのラベルがあり、ヘッダの高さはそれぞれのUILabelsの内容に従って調整する必要があります。私はこのイメージに似た何かを達成したい。 Sample image.UITableViewで動的なラベルの幅で自動ヘッダーの高さを管理する

ここで、ラベルの幅は画面サイズに応じて動的になります。 「タイプ」ラベルは画面の約2/3をカバーし、残りは3つのラベル間で等しく分割されます。ここでは、画面サイズに応じてラベルが複数行になる可能性があり、ラベルの内容に従ってメインビューの高さを管理したいと考えています。

ラベルに固定幅の制約を付けると、高さを管理することに成功しましたが、ラベルの幅を動的に保ちたいと思います。これはUITableViewヘッダーです。どんな助けでも大歓迎です。

+0

ここで私は、Cellのためのソリューションを提供している、あなたはあなたが必要とするセクションヘッダリターンセクション+ 1のために同じことを行うことができますhttps://stackoverflow.com/a/43556505/3236890 、参考としてこのリンクを試してみてください、第1セクションのセル0の戻り値については、 セクションヘッダーの動的高さについてセクションヘッダーの高さとセクションヘッダーUItableViewautomaticdimensionの推定高さを使用してください。 – dip

+0

私の答えが役に立つなら、あなたもそれを受け入れることを願っています。 :) –

+0

@dip先行/後続または比例幅の制約を使用するたびに、ラベルの幅は増加しますが、ラベルの高さは内容に応じて増加しません。テキストが指定された幅に収まらない場合、ラベルと表示の高さを増やす必要があります。返信いただきありがとうございます。 –

答えて

0

このようなヘッダーとデザインのためにtableViewCellと同様にcustomCellを作成します。デザインがどのように行われるか

enter image description here

SMS電子メールやプッシュ通知をstackViewにカプセル化され、それがタイプラベルを自動レイアウトとなっています。

これは階層です。

enter image description here

そして、これはタイプのレイアウト設計(2/3)自分で正確に.Calculateです。

enter image description here

これはstackViewためです。

enter image description here

両方がスーパーでオートレイアウト(すなわち細胞である)

StackViewれる:

enter image description here

とタイプラベル用。

enter image description here

あなたのtableViewのheaderViewとしてこのセルを挿入します。

どのようにですか? viewDidLoadで

tableView.register(UINib.init(nibName: String(describing: TableHeader.self), bundle: nil), forCellReuseIdentifier: "headerCell") 

あなたrespectivewビューコントローラでは、この2つの機能を追加します。

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "headerCell") as! TableHeader 
    return cell 
} 

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
    return 58 
} 

そして、ここで出力されます:iOSの8のために

enter image description here

StackViewが存在しないので、我々は自動レイアウトを説明するのUIView instead.Asを使用する必要は注意が必要ですだから私はちょうど理解しやすい私のプロジェクトを共有しました。あなたはチェックアウト可能ですhere

スタックビューを使用しない場合の出力は、以下のとおりです。

2ビューが取得されます。より理解を深めるために色を付けました。

enter image description here

+0

返事をありがとう。 StackViewを使用することは素晴らしいアイデアですが、私はiOS 8もサポートしていますので、その代替案を提案できますか? –

+0

はいスタックをビューに置き換えてください。そのビューの各ラベルをそのビューの1/3にして、スーパービューで乗数を使用してwitdthを作成します –

+0

ありがとう、ちょっとだけ、ビューの高さも管理したいと思います。 「プッシュ通知」が「プッシュ通知非常に長いテキスト」に変更され、ラベルの高さは増加しますが、コンテンツの表示の高さもそれに応じて増加するはずですので、iOS 8のソリューションでも同じことを参照してください。助け、大いに感謝します。 –

関連する問題