複数のセクションを持ち、長いテキストのセクションがいくつかあるテーブルビューコントローラを使用しています。 titleForHeaderSectionを使用すると、テキストの長さがtableviewフレームよりも大きい場合、テキストは切り詰められます。私は次の行にテキストを表示したい。長いテキストのテーブルビューセクションヘッダーを複数の行に表示するにはどうすればよいですか?
1
A
答えて
2
titleForHeaderInSection
を使用する代わりに、viewForHeaderInSection
を試してみてください。このメソッドはビューを返すように求めますが、UILabel
はUIView
のサブクラスなので、ラベルを返すこともできます。
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let label = UILabel()
label.backgroundColor = UIColor.black
label.textColor = UIColor.white
label.lineBreakMode = .byWordWrapping
label.numberOfLines = 0
label.text = "Here's to the crazy ones. The misfits. The rebels. The troublemakers. The round pegs in the square holes. The ones who see things differently. They're not fond of rules. And they have no respect for the status quo. You can quote them, disagree with them, glorify or vilify them. About the only thing you can't do is ignore them. Because they change things. They push the human race forward. And while some may see them as the crazy ones, we see genius. Because the people who are crazy enough to think they can change the world, are the ones who do."
return label
}
このアプローチを使用すると、テキストはテーブルビューの左右の端に移動します。ほとんどの場合、特にテーブルビューがデバイスの全幅を占める場合、これはあまり良くありません。
簡単な修正:UILabel
のカスタムサブクラスを作成します(私はTableViewHeaderLabel
と呼ぶ)。このサブクラスでは、ラベルにインセットを追加します。また、ViewControllerファイルをよりきれいにするために、単語の折り返し、背景色などをこのラベルに移動することもできます。
これはTableViewHeaderLabel.swift
は次のようになります。このようになり、それを使用して、その後
import UIKit
class TableViewHeaderLabel: UILabel {
var topInset: CGFloat = 0
var rightInset: CGFloat = 12
var bottomInset: CGFloat = 0
var leftInset: CGFloat = 12
override func drawText(in rect: CGRect) {
let insets: UIEdgeInsets = UIEdgeInsets(top: self.topInset, left: self.leftInset, bottom: self.bottomInset, right: self.rightInset)
self.setNeedsLayout()
self.textColor = UIColor.white
self.backgroundColor = UIColor.black
self.lineBreakMode = .byWordWrapping
self.numberOfLines = 0
return super.drawText(in: UIEdgeInsetsInsetRect(rect, insets))
}
}
そして:ソリューション@Austinウッド
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let label = TableViewHeaderLabel()
label.text = "Here's to the crazy ones. The misfits. The rebels. The troublemakers. The round pegs in the square holes. The ones who see things differently. They're not fond of rules. And they have no respect for the status quo. You can quote them, disagree with them, glorify or vilify them. About the only thing you can't do is ignore them. Because they change things. They push the human race forward. And while some may see them as the crazy ones, we see genius. Because the people who are crazy enough to think they can change the world, are the ones who do."
return label
}
1
viewForHeaderInSection
を使用すると、headerViewを作成できます。 UILabelをheaderviewにサブビューとして追加します。テキストを複数の行に表示するには、UILabelの複数行プロパティを使用します。また、headerViewの高さを設定します。
関連する問題
- 1. 複数の行にテキストを表示するにはどうすればよいですか?
- 2. ビン地図に複数のテキスト行を表示するにはどうすればいいですか?
- 3. 複数行テキストの省略記号を表示するにはどうすればよいですか?
- 4. Androidプログラミング:長方形に複数行テキストを描画するにはどうすればよいですか?
- 5. 複数のLightFaceが表示されないようにするにはどうすればよいですか?
- 6. 複数のレコードをMySQLの1つの行に表示するにはどうすればよいですか?
- 7. jqueryポップアップウィンドウにテキスト領域と複数のラジオボタンを表示するにはどうすればいいですか?
- 8. テーブル内の同じグラフに複数の行を表示するにはどうすればよいですか?
- 9. Rのポップアップに複数の行を表示するにはどうすればよいですか?
- 10. テーブル行(td)に複数のデータを表示するにはどうすればよいですか?ストアドプロシージャ? Linq?
- 11. 複数のカルーセルを1行に表示するにはどうすればよいですか?
- 12. クリック後に長いテキストを表示するにはどうすればいいですか?
- 13. Libgdxテキストを表示するにはどうすればよいですか?
- 14. 複数行のGCMプッシュ通知をDelphiで表示するにはどうすればよいですか?
- 15. テキストを新しい行で左側に表示するにはどうすればよいですか?
- 16. テキストをイメージボックスに表示するにはどうすればいいですか?
- 17. 複数の行のテキストを垂直に配置するにはどうすればよいでしょうか?
- 18. フラスコに複数の行を表示するにはどうすればいいですか?ここ
- 19. lwuit(J2ME)に複数行textAreasを表示するにはどうすればよいですか?
- 20. 複数の非表示フィールドをCSSとJavascriptで表示するにはどうすればいいですか?
- 21. テキストボックスのテキストファイルから特定のテキスト行を表示するにはどうすればよいですか?
- 22. 長いテキストを含む表の垂直スクロールを防止するにはどうすればよいですか?
- 23. 複数行のコードに複数行のコードを挿入するにはどうすればよいですか?
- 24. 複数の行をコピーするにはどうすればよいですか?
- 25. テキストを表示するにはどうすればいいですか?
- 26. 複数のテキスト行に境界ボトムを適用するにはどうすればよいですか?
- 27. NSMenuItemに複数行のテキストを挿入するにはどうすればよいですか?
- 28. ラベルを複数行にするにはどうすればよいですか?
- 29. VBAで列の複数のセットを非表示にするにはどうすればよいですか?
- 30. テキスト分類のテキストに複数の機能を使用するにはどうすればよいですか?
感謝を。最初の部分は私の問題を解決するために使った。しかし、私は2番目のソリューションを試していたが、下の2行は、ラベルが定義されていないと言ってエラーを投げています。viewForHeaderInSectionからラベル参照を取得していないと考えていました。 label.lineBreakMode = .byWordWrapping label.numberOfLines = 0 – TeKnofUNk
申し訳ありません!これらの2つの行では、 "label"を "self"に変更してください。変更を反映するために私の回答を編集しました。 –
"label"を "self"に変更すると、問題が修正されます。 – TeKnofUNk