概要
次の仕様のテーブルビューを備えたiOSプロジェクトがあります。
- 静的セル(コンテンツは動的に入力されません)
- スタイルはグループ化されています
質問
- 静的テーブルビューのセクションヘッダーのテキストの色を変更するにはどうすればよいですか?
概要
次の仕様のテーブルビューを備えたiOSプロジェクトがあります。
質問
独自のヘッダービューを作成する必要があります。
テーブルビューデータソース/デリゲート内に実装する
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
NSString *sectionTitle = [self tableView:tableView titleForHeaderInSection:section];
if (sectionTitle == nil) {
return nil;
}
// Create label with section title
UILabel *label = [[[UILabel alloc] init] autorelease];
label.frame = CGRectMake(20, 6, 300, 30);
label.backgroundColor = [UIColor clearColor];
label.textColor = [UIColor colorWithHue:(136.0/360.0) // Slightly bluish green
saturation:1.0
brightness:0.60
alpha:1.0];
label.shadowColor = [UIColor whiteColor];
label.shadowOffset = CGSizeMake(0.0, 1.0);
label.font = [UIFont boldSystemFontOfSize:16];
label.text = sectionTitle;
// Create header view and add label as a subview
// you could also just return the label (instead of making a new view and adding the label as subview. With the view you have more flexibility to make a background color or different paddings
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, SectionHeaderHeight)];
[view autorelease];
[view addSubview:label];
return view;
}
これも作ることができます:
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
[[((UITableViewHeaderFooterView*) view) textLabel] setTextColor:[UIColor whiteColor]];
}
....。
ビューと一緒にヘッダーの高さを追加した後にのみ、ヘッダーを表示できました
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 110;
}
Swift 4.2の場合:
override func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {
if let headerView = view as? UITableViewHeaderFooterView {
headerView.textLabel?.textColor = UIColor.OMGColors.dimText
}
}
独自のヘッダービューを作成する必要はありません-静的セルの目的を無効にします。IBのどこかでこれを直接設定できないことに驚いています...