グループ化されたテーブル ビューのすべてのビューを取得して、ラベルの色を変更し、背景色を設定したいと考えています。
3 に答える
答えが見つかりました。テーブル ビュー セクションのヘッダー ビューを取得することはできません。ただし、デリゲートを実装tableView:viewForHeaderInSection:
してヘッダー ビューとラベルを再作成することはできます。次のコードは、同じヘッダー ビューと正確なラベルを提供します。
- (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] initWithFrame:CGRectMake(20.0f, 5.5f, 300.0f, 30.0f)];
label.backgroundColor = [UIColor clearColor];
label.font = [UIFont boldSystemFontOfSize:16.5];
label.shadowColor = [UIColor whiteColor];
label.shadowOffset = CGSizeMake(0.0, 1.0);
label.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth;
label.text = sectionTitle;
// Create header view and add label as a subview
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.view.frame.size.width, 44.0f)];
view.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleWidth;
[view addSubview:label];
return view;
}
また、textColor を追加する必要があります。
label.textColor = [UIColor colorWithRed:0.265 green:0.294 blue:0.367 alpha:1.000];
解決策を見つけたのは素晴らしいことです。
いくつかの提案:
フレームの幅に合わせて CGRect をハードコーディングしないで、幅に使用
self.view.size.width
します (たとえば、横向きの場合や、Apple が異なる画面サイズの iPhone を導入した場合)。おそらく
autoresizingMask
、ラベルとラベルを保持するビューの両方に使用して、画面の向きが変わるとサイズが変更されるようにするか、向きの変更時に呼び出すようにしてください[self.tableview reloadData]
。とこれは明らかに単一行のラベルです...それがうまく機能する場合は、それ以外の場合は
sizeWithFont:constrainedToSize:lineBreakMode
、ラベル/ビューの作成とtableView:heightForHeaderInSection:
.