Неправильный цвет фона в дополнительном представлении на iOS7

У меня есть UITableView, и я установил цвет фона моей ячейки в RGB 244, 240, 246. Я сделал это, установив цвет фона в таблице, ячейке таблицы и представлении содержимого в ячейке таблицы.

Тем не менее, аксессуар (в данном случае галочка) имеет черный фон.

UIAccessoryView имеет черный фон

Когда я включаю редактирование таблицы, круг удаления с левой стороны также имеет черный фон.

Редактирование включено имеет более черный фон

Я не могу изменить этот цвет фона.

Я попытался сделать это с помощью следующего кода:

cell.editingAccessoryView = [[UIView alloc] init];
cell.editingAccessoryView.backgroundColor = [UIColor colorWithRed:244/255 green:240/255 blue:246/255 alpha:1.0];

но это не имеет никакого эффекта.

Я пытался найти настройки в раскадровке, но, похоже, ничего не имеет значения.

Я заметил, что если я изменю цвет фона ячейки таблицы и представления содержимого на "по умолчанию", фон всей ячейки станет черным (даже если цвет фона таблицы все еще остается моим собственным цветом).

Я просмотрел руководство по переходу с iOS7 и не увидел ничего, связанного с UIAccessoryView. Я также искал через stackru, но я не смог найти ничего, что соответствует моей проблеме.

Как я могу это исправить?

5 ответов

Решение

Проблема была вызвана цветом объекта. Правильная строка:

cell.editingAccessoryView.backgroundColor = [UIColor colorWithRed:244/255.0f green:240/255.0f blue:246/255.0f alpha:1.0];

Мое лучшее предположение состоит в том, что без.0f он рассматривал числа как целые и обрезал все значения до 0 (что дало бы мне черный цвет).

В iOS 7 ячейки по умолчанию имеют белый фон; в более ранних версиях iOS ячейки наследовали цвет фона представления таблицы. Если вы хотите изменить цвет фона ячейки, сделайте это в tableView:willDisplayCell:forRowAtIndexPath: метод вашего делегата табличного представления.

Я надеюсь, что это поможет вам

Вам нужно установить свойство backgroundView UITableViewCellВы не можете просто изменить editingAccessoryView, как вы, наверное, видели. Вместо этого сделайте что-то вроде:

UIView *aBackgroundView = [[[UIView alloc] initWithFrame:CGRectZero] autorelease];
aBackgroundView.backgroundColor = [UIColor yourColor];
yourCell.backgroundView = aBackgroundView;

Или в

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

Использование:

cell.contentView.superview.backgroundColor = [UIColor redColor];

Для ячейки табличного представления есть свойство с именем backgroundView, Вам нужно только изменить цвет фона для backgroundView. Это оно.

 cell.backgroundView.backgroundColor = [UIColor yourcolor];

Для iOS 7 поместите это в настраиваемый код ячейки таблицы

- (void)willTransitionToState:(UITableViewCellStateMask)state
{
    [super willTransitionToState:state];
    if ((state & UITableViewCellStateShowingEditControlMask) == UITableViewCellStateShowingEditControlMask)
    {
        for (UIView *subview in self.subviews)
        {
            if ([NSStringFromClass([subview class]) isEqualToString:@"UITableViewCellScrollView"])
            {
                subview.backgroundColor  = [UIColor colorWithRed:0.69 green:0.769 blue:0.871 alpha:1];
            }
        }
    }

}

Другие вопросы по тегам