Фоновое изображение UITableView для статического раздела / ячеек

Я знаю, что мы можем добавлять фоновые изображения / цвета в заголовки разделов в динамическом табличном представлении / ячейках, но может ли кто-нибудь помочь мне сделать то же самое в табличном представлении с использованием статических ячеек?
Я хочу использовать фоновое изображение для моего третьего раздел в TableView, который использует статические ячейки (всего 4 раздела)
Я хочу добавить фоновое изображение и изменить цвет текста, чтобы указать какое-то значение RGB для 3-го раздела

Я хочу изменить цвет текста раздела описания и BG


person vongolashu    schedule 16.11.2013    source источник


Ответы (3)


Вы можете использовать методы делегата UITableView, чтобы установить высоту и вид для заголовка раздела. Это должно делать то, что вы хотите:

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section {
    return (section == 2)? 100:30;
}


- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section {
    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 100)];
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, 100)];
    label.text = @"Description";
    label.textColor = [UIColor whiteColor];
    [imageView addSubview:label];
    imageView.image = [UIImage imageNamed:@"House.tiff"];
    return (section == 2)? imageView:nil;
}
person rdelmar    schedule 16.11.2013
comment
Я думал об этом как об использовании того же способа в динамической таблице, но можете ли вы мне это сказать, поскольку мой раздел находится на 3-й позиции, вы используете 2 в качестве номера индекса, чтобы проверить, является ли его этот раздел? Кроме того, безопасно ли возвращаться? Возврат nil для раздела 0 1 3 заставляет его использовать раздел, как он разработан в раскадровке (с использованием IB) - person vongolashu; 16.11.2013
comment
@ user2897064, да, индекс третьего раздела равен 2, поэтому я тестирую его именно так. Возврат nil для других разделов действительно оставил эти разделы с заголовками, которые были установлены в IB - они были идентичны тем, что я получил, если бы я вообще не реализовал viewForHeaderInSection. - person rdelmar; 16.11.2013
comment
Ура, протестировал и работал. Конечный результат отличался от того, что я имел в виду для пользовательского интерфейса, поэтому мне пришлось вместо этого убрать разделы и увеличить строки в 1 разделе, добавив метки пользовательского интерфейса с изображением BG, чтобы действовать как раздел. Но да, это ответило на мой вопрос и поможет мне в будущем. Спасибо - person vongolashu; 17.11.2013

UITableViewCells имеют свойство backgroundView, которое является UIView. Вы можете изменить его, например, на UIImageView или создать более сложный фон для ячеек табличного представления. Неважно, является ли ячейка статической или динамической.

Затем цвет текста для ячейки можно просто изменить, установив UITableViewCells cell.textLabel.textColor.

То же самое относится к UITableViewHeaderFooterView, которые (как следует из названия) используются для верхнего и нижнего колонтитула разделов представления таблицы. В коде вы можете получить доступ к заголовку раздела, используя

- (UITableViewHeaderFooterView *)headerViewForSection:(NSInteger)section

Это избавляет вас от полного воссоздания заголовка с нуля, просто чтобы внести небольшие изменения. В качестве альтернативы переопределить

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

и создайте собственный UIView, который станет вашим заголовком.

person monK_    schedule 16.11.2013

Вы должны назначить тег (скажем, 15) статической ячейке в

tableview:didSelectRowForIndexPath

а потом

- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if(cell.tag==15)
    cell.backgroundColor = [UIColor colorWithRed:255/255.0  green:250/255.0 blue:243/255.0 alpha:1.0];

}
person mak    schedule 16.11.2013
comment
эээ ... пожалуйста, перечитайте то, что я спросил, это не ячейка, это раздел, над которым мне нужно поработать. Даже включил изображение, чтобы объяснить это - person vongolashu; 16.11.2013