Изменение цвета заголовка раздела в UITableview

У меня довольно простой простой вопрос (надеюсь). Как изменить цвет заголовка раздела в UITableview с синего по умолчанию на черный прозрачный? Заранее спасибо.


person Simon D.    schedule 05.03.2010    source источник
comment
Вот аналогичный вопрос: stackoverflow.com/questions/813068 /   -  person nylund    schedule 01.12.2011


Ответы (2)


вам необходимо реализовать этот метод в протоколе UITableViewDelegate:

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

Вот ссылка на документация

... и сделайте что-то вроде этого (подпункт вашего собственного цвета):

UIView *sectionView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 22)] autorelease];
[sectionView setBackgroundColor:[UIColor blackColor]];
return sectionView;

Вы также можете использовать целое число раздела для чередования цветов или чего-то подобного. Я думаю, что высота секций по умолчанию - 22, но вы можете сделать все, что захотите. Это то, что вы имели в виду под своим вопросом? Надеюсь это поможет.

person Ryan Ferretti    schedule 05.03.2010
comment
Спасибо, я подумал, что в IB будет какой-то триггер для переключения на черный цвет. Но в любом случае спасибо. - person Simon D.; 06.03.2010
comment
Но, пожалуйста, кешируйте эти просмотры. В UIKit есть ошибка, вызывающая запрос представлений заголовков при прокрутке tableView, поэтому этот метод будет вызываться для каждого пиксельного смещения во время прокрутки. 22 пикселя - это действительно высота по умолчанию. - person Joost; 06.03.2010
comment
Привет, я понимаю, что этот метод вызывается при прокрутке ... как мы можем кэшировать это, чтобы сохранить ненужные создаваемые представления и т. д.? если вы можете опубликовать комментарий или обновление к своему сообщению, это будет очень полезно. Спасибо - person Pavan; 29.08.2012

Это старый вопрос, но я думаю, что ответ нужно обновить.

This method does not involve defining your own custom views.
In iOS 6 and up, you can easily change the background color and the text color by defining the

- (void)tableView:(UITableView *)tableView 
        willDisplayHeaderView:(UIView *)view 
        forSection:(NSInteger)section
delegate method.

Например:

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
    // Background color
    view.tintColor = [UIColor blackColor];

    // Text Color
    UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view;
    [header.textLabel setTextColor:[UIColor whiteColor]];

    // Another way to set the background color
    // Note: does not preserve gradient effect of original header
    // header.contentView.backgroundColor = [UIColor blackColor];
}

Взято из моего сообщения здесь: https://happyteamlabs.com/blog/ios-how-to-customize-table-view-header-and-footer-colors/

person Dj S    schedule 04.10.2013