UITableView セクション ヘッダー内のテキストのフォント サイズを変更する最も簡単な方法を教えていただけますか?
セクション タイトルは次の方法で実装しました。
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
次に、この方法を使用してセクション ヘッダーの高さを正常に変更する方法を理解します。
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
このメソッドを使用して UITableView セルにデータを入力します。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
しかし、セクション ヘッダー テキストのフォント サイズ (またはフォント スタイル) を実際に大きくする方法がわかりません。
誰か助けてくれませんか? ありがとう。
ベストアンサー1
UITableViewDelegate
これを行う別の方法は、メソッドに応答することですwillDisplayHeaderView
。渡されたビューは、実際には のインスタンスですUITableViewHeaderFooterView
。
以下の例では、フォントを変更し、タイトル テキストをセル内で垂直方向と水平方向に中央揃えします。heightForHeaderInSection
ヘッダーの高さの変更がテーブル ビューのレイアウトに反映されるように、 にも応答する必要があることに注意してください (つまり、この方法でヘッダーの高さを変更することにした場合willDisplayHeaderView
)。
その後、メソッドに応答してtitleForHeaderInSection
、この構成されたヘッダーを異なるセクション タイトルで再利用できます。
オブジェクティブC
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section {
UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
header.textLabel.textColor = [UIColor redColor];
header.textLabel.font = [UIFont boldSystemFontOfSize:18];
CGRect headerFrame = header.frame;
header.textLabel.frame = headerFrame;
header.textLabel.textAlignment = NSTextAlignmentCenter;
}
スウィフト1.2
(注: ビュー コントローラが の子孫である場合はUITableViewController
、 として宣言する必要がありますoverride func
。)
override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int)
{
let header:UITableViewHeaderFooterView = view as! UITableViewHeaderFooterView
header.textLabel.textColor = UIColor.redColor()
header.textLabel.font = UIFont.boldSystemFontOfSize(18)
header.textLabel.frame = header.frame
header.textLabel.textAlignment = NSTextAlignment.Center
}
スウィフト3.0
このコードは、ヘッダー ビューが UITableViewHeaderFooterView 以外の場合にアプリがクラッシュしないことも保証します。
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
guard let header = view as? UITableViewHeaderFooterView else { return }
header.textLabel?.textColor = UIColor.red
header.textLabel?.font = UIFont.boldSystemFont(ofSize: 18)
header.textLabel?.frame = header.bounds
header.textLabel?.textAlignment = .center
}