web-dev-qa-db-ja.com

グループ化されたタイプUITableViewのタイトルのフォントの色を変更するには?

グループ化されたタイプのテーブルビューがあり、かなりクールに見えます。

しかし、テーブルの背景色を黒に変更すると、タイトルが不明瞭になります。

フォントの色とスタイルを変更して読みやすくすることは可能ですか? tableView:viewForHeaderInSection:メソッドを実装する必要がありますか?

41
Confused

はい...それは今うまくいきます!

tableView:viewForHeaderInSection:メソッドを作成し、UIViewを作成しました

UIView *customTitleView = [ [UIView alloc] initWithFrame:CGRectMake(10, 0, 300, 44)];

次に、UILabelを作成し、テキスト値と色をラベルに設定します。次に、ラベルをビューに追加しました

UILabel *titleLabel = [ [UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 44)];
titleLabel.text = @"<Title string here>";
titleLabel.textColor = [UIColor whiteColor];
titleLabel.backgroundColor = [UIColor clearColor];
[customTitleView addSubview:titleLabel];

したがって、私のtableView:viewForHeaderInSection:メソッドは次のようになります...

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {

    UIView *customTitleView = [ [UIView alloc] initWithFrame:CGRectMake(10, 0, 300, 44)];
    UILabel *titleLabel = [ [UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 44)];
    titleLabel.text = @"<Title string here>";
    titleLabel.textColor = [UIColor whiteColor];
    titleLabel.backgroundColor = [UIColor clearColor];
    [customTitleView addSubview:titleLabel];
    return customTitleView;
}

タイトルにスペースを提供するために、tableView:heightForHeaderInSection:メソッドを追加する必要があります。

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section 
{
    return 44; 
}
22
Confused

白色のフォントとシャドウを使用して、TableViewのデフォルトの座標とセクションを使用するには:

-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    NSString *sectionTitle = [self tableView:tableView titleForHeaderInSection:section];
    if (sectionTitle == nil) {
        return nil;
    }

    UILabel *label = [[UILabel alloc] init];
    label.frame = CGRectMake(20, 8, 320, 20);
    label.backgroundColor = [UIColor clearColor];
    label.textColor = [UIColor whiteColor];
    label.shadowColor = [UIColor grayColor];
    label.shadowOffset = CGSizeMake(-1.0, 1.0);
    label.font = [UIFont boldSystemFontOfSize:16];
    label.text = sectionTitle;

    UIView *view = [[UIView alloc] init];
    [view addSubview:label];

    return view;
}
43
Adriano Lucas

ヘッダーの色またはフォントを変更するだけの場合は、tableView: willDisplayHeaderView: forSection:。 Swiftの例を次に示します。

Swift v5:

override public func tableView(_ tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {

    if let view = view as? UITableViewHeaderFooterView {
        view.backgroundView?.backgroundColor = UIColor.blue
        view.textLabel?.backgroundColor = UIColor.clear
        view.textLabel?.textColor = UIColor.white
    }
}

オリジナル:

override func tableView(tableView: UITableView, willDisplayHeaderView view: UIView, forSection section: Int) {

    if let view = view as? UITableViewHeaderFooterView {
        view.backgroundView?.backgroundColor = ThemeBlue
        view.textLabel.backgroundColor = UIColor.clearColor()
        view.textLabel.textColor = UIColor.whiteColor()
    }

}
42
Code Commander
if ([UIDevice currentDevice].systemVersion.floatValue > 7.0) {
    [[UILabel appearanceWhenContainedIn:[UITableViewHeaderFooterView class], nil] setTextColor:[UIColor whiteColor]];
}
2
Nitesh Borad

From Apple documentation

テーブルビューでは、セクションヘッダーのタイトルに固定フォントスタイルが使用されます。別のフォントスタイルが必要な場合は、代わりにデリゲートメソッドtableView:viewForHeaderInSection:でカスタムビュー(UILabelオブジェクトなど)を返します。

そのため、以下のメソッドを使用して、選択したフォントでカスタムビュー(UILabel)を返します。

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

Apple documentation から読み取り

2
Jhaliya

Swift 4.2

UILabel.appearance(whenContainedInInstancesOf: [UITableViewHeaderFooterView.self]).textColor = .white
0
Zoltan Vinkler