У меня есть пользовательский подкласс UITableViewCell
. Я установил contentView
моего подкласса ячейки
пользовательский класс UIView
, в котором я переопределяю -drawRect:
и выполняю все чертежи.
Кроме того, я устанавливаю cell.contentView.opaque = NO
для достижения прозрачности в определенных областях ячейки (к сожалению, обратное изображение за столом должно показывать через каждую ячейку в определенных частях, чтобы добиться стилистического эффекта. Я знаю, что это производительность должна быть такой).
Проблема. Я по-прежнему вижу фоновый цвет синего градиента по умолчанию, который рисуется за моей ячейкой (в прозрачных областях), когда он выбран или подсвечен (нажат). Это заслоняет изображение за столом, что плохо.
Цель. Чтобы предотвратить появление синего градиентного фона, но все же сможете проверить свойства cell.isSelected
и cell.isHighlighted
в пределах -[MyContentView drawRect:]
, чтобы определить, как рисовать мой собственный пользовательский выбор/выделение.
Что я пробовал:
-
cell.selectionStyle = UITableViewCellSelectionStyleNone
имеет желаемый эффект, предотвращающий фоновый фон выбора синего градиента, но также предотвращает правильную установку свойствcell.isSelected
иcell.isHighlighted
, что означает, что я не могу выполнить свой собственный выбор/выделить рисунок -
cell.selectionBackgroundView = nil
иcell.backgroundView = nil
в методе cell-init
или-prepareForReuse
не препятствует фону выбора синего градиента -
настройка
cell.selectionBackgroundView = nil
в методе-[MyContentView -drawRect:]
имеет желаемый эффект предотвращения фона выбора синего градиента, но это кажется очень janky -
overriding - [UITableViewCell setSelected: анимированный:] - не-op. это не имеет желаемого эффекта предотвращения фона выбора синего градиента.