Установка стиля заголовков разделов UITableView - PullRequest
19 голосов
/ 04 марта 2012

Я работаю с iOS 5 и динамически генерирую ячейки в таблице (2 секции по 3 строки в каждой).У каждого раздела есть заголовок, который также динамически генерируется с помощью вызова titleForHeaderInSection.

У меня также есть изображение, установленное в качестве фона для таблицы, что затрудняет чтение по умолчанию цвета заголовков разделов.Я не нашел способа изменить цвет заголовков разделов (или, соответственно, shadow color, font, text size и т. Д.) Ни через интерфейс раскадровки, ни программно!Пожалуйста, помогите!

Ответы [ 5 ]

37 голосов
/ 29 октября 2012

Это также работает в iOS5 +. Это относится ко всем верхним и нижним колонтитулам раздела в табличном представлении и соответствует моим потребностям.

- (void)viewDidLoad
{
    [super viewDidLoad];

    [[UILabel appearanceWhenContainedIn:[UITableViewHeaderFooterView class], nil] setFont:[UIFont fontWithName:@"MyFont" size:8]];
}

Dan

19 голосов
/ 04 марта 2012

Вы можете изменить размер шрифта / цвет / и т. Д., Создав собственный вид для заголовка раздела, используя метод tableView:viewForHeaderInSection:

Пример этой техники здесь

11 голосов
/ 18 марта 2014

Самый простой способ

Если вы не вносите слишком много изменений, например, просто меняете шрифт или цвета:

- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section
{
    UITableViewHeaderFooterView *tableViewHeaderFooterView = (UITableViewHeaderFooterView *)view;
    tableViewHeaderFooterView.textLabel.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:12.0f];
    tableViewHeaderFooterView.textLabel.textColor = [UIColor colorWithRed:0.27f green:0.27f blue:0.27f alpha:1.0f];
    tableViewHeaderFooterView.contentView.backgroundColor = [UIColor colorWithRed:0.87f green:0.87f blue:0.87f alpha:1.0f];
}
7 голосов
/ 08 мая 2013

Класс UITableViewHeaderFooterView реализует многоразовое представление, которое может быть размещено в верхней или нижней части раздела таблицы.Верхние и нижние колонтитулы используются для отображения дополнительной информации для этого раздела.

Доступность: iOS (6.0 и более поздние версии)

Пример:

[[UILabel appearanceWhenContainedIn:[UITableViewHeaderFooterView class], nil] setColor:[UIColor whiteColor]];
0 голосов
/ 31 октября 2013

Самый простой способ получить пользовательский заголовок раздела - использовать ячейку!

Очень похоже на технику, используемую для

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

Вы можете создать экземпляр прототипа ячейки, который выпредоставлять.Если в вашей ячейке есть выход для метки, вы можете установить его перед возвратом:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger) section
{
    SessionTableViewCell *cell;
    cell = [tableView dequeueReusableCellWithIdentifier:@"SessionSectionHeader"];
    if (cell == nil) {
        cell = [[SessionTableViewCell alloc]
               initWithStyle:UITableViewCellStyleDefault
             reuseIdentifier:@"SessionSectionHeader"];
    }
    cell.myLabel.text = myTitles[section];
    return cell;
}

Обратите внимание, что @ "SessionSectionHeader" - это идентификатор в раскадровке для нашего прототипа ячейки.

НТН!

...