Подтвердить что ты не робот

Изменение цвета фона cell.accessoryView и cell.editingAccessoryView

Когда я добавляю аксессуар в свой UITableViewCell, он не переносит цвет фона? Я устанавливаю UISwitch как свой аксессуар, и цвет, который я установил в свойстве cell.backgroundColor, влияет только на contentView, а не на аксессуар. Я попробовал все, чтобы установить их на одно значение. Я попытался установить свойство cell.backgroundView.backgroundColor и cell.accessoryView.backgroundColor для цвета, который я хочу, но ничего не работает. Я также попытался создать subview внутри contentView, который решил проблему backgroundColor (избегая его), но он создает проблему, когда переключатель находится поверх ячейки .textLabel, когда текст слишком длинный.

Есть ли способ изменить цвет фона аксессура, не создавая subview в contentView, или изменить длину cell.textLabel без подкласса UITableViewCell?

4b9b3361

Ответ 1

После прочтения документации (новая идея) я нашел статью "" Более внимательный взгляд на ячейки таблицы". Это помогло мне понять состав ячеек, и я нашел ответ...

ячейки выглядят так:

alt text

Так как cell.accessoryView является сестра-представлением cell.contentView, я должен был спросить cell.contentView для его супервизора, а затем мне удалось изменить цвет фона для обоих представлений сразу. Вот как выглядит код...

// Cell Formatting
cell.contentView.superview.backgroundColor = [UIColor greenColor];

Я знаю, что это очень просто, но я новичок, и мне потребовались годы, чтобы замедлить работу и прочитать документ. Надеюсь, это поможет некоторым другим людям!

Ответ 2

- (void) tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
    cell.backgroundColor = [UIColor yellowColor];
}

Ответ 3

 UIView *myView = [[UIView alloc] initWithFrame:cell.frame];
 myView.backgroundColor = [UIColor colorWithRed:214.00/255.00 green:233.00/255.00 blue:247.00/255.00 alpha:1.0];
 cell.backgroundView = myView;
 [myView release];

Ответ 4

@Zak, прежде всего, спасибо за то, что привлек к себе внимание макета ячейки. Очень полезно! Я хотел бы отметить, что следующий код:

self.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"cell_background.png"]];

работал у меня. Результатом было фоновое изображение, растянутое по всей ячейке. AccessoryTypeView не покрыл его! Важная часть состоит в том, чтобы поместить этот код в метод layoutSubviews вашего пользовательского класса ячеек, а не в cellForRowAtIndexPath, который находится в классе TableViewController. В моем случае я определил класс CustomCell и внутри него я определил метки, изображения и т.д.

ПРИМЕЧАНИЕ. Следующий код не работал:

cell.contentView.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"cell_background.png"]];

при вводе внутри tableView: (UITableView *) tableView cellForRowAtIndexPat. Это давало мне фоновое покрытие ячейки, но AccessoryTypeView было над ним...

Ответ 5

Если вы хотите смешать цвет фона вспомогательного вида с цветом фона ячейки, в iOS8 и Swift это работает как шарм в методе tableView (_, cellForRowAtIndexPath:):

let color = cell.contentView.backgroundColor
cell.backgroundColor = color