Как сделать UITableViewCellAccessoryDisclosureIndicator видимым на черном фоне?

StackOverflow https://stackoverflow.com/questions/249010

  •  05-07-2019
  •  | 
  •  

Вопрос

cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

в этом методе

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

но я могу видеть это только тогда, когда выбираю эту ячейку, иначе она не видна. И она отлично работает, когда фон белый.Я уверен, что мне нужно установить свойство, но я не знаю, какое свойство мне нужно изменить, чтобы эта штука заработала.

заранее спасибо.

ваше здоровье.

Это было полезно?

Решение

Похоже, что индикатор раскрытия представляет собой серое изображение с высоким уровнем альфа, поэтому наложение его на черный фон делает его невидимым.Если вы хотите это сделать, вам нужно будет добавить свой собственный UIImageView в contentView ячейки.

Другие советы

Я столкнулся с той же проблемой и просто создал UIImageView из imageWithName @"AccDisclosure.png" UIView, используя следующий наспех смоделированный рисунок, который вы можете скопировать: http://thinkingman.com/db/downloads/AccDisclosure.png (если вы просто нажмете на эту ссылку, вы, вероятно, ничего не увидите, так как это белое изображение с прозрачным фоном, но если вы сохраните его и просмотрите на темном фоне, вы увидите альфа).

Следующий код позволяет мне установить цвет фона кончика стрелки в строке таблицы:

@property (nonatomic,retain) UILabel *backgroundLabel;

UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
label.backgroundColor = [UIColor orangeColor]; 
self.backgroundLabel = label;
[self.contentView addSubview:label];
[label release];

CGRect labelRect = CGRectOffset(contentRect,0, 0);
labelRect.size.height = contentRect.size.height - 1; // show white line
labelRect.size.width = contentRect.size.width + 50; // cover arrow tip background
backgroundLabel.frame = labelRect;    
backgroundLabel.highlightedTextColor = [UIColor whiteColor];

Я принял решение, в котором я добавил ImageView с помощью addSubView обычным способом, с изображением, которое не было черным (в моем случае, серым заполненным кругом) в том месте, где появляется аксессуар.

Это позволяет стрелке быть видимой и при этом иметь темный/черный цвет фона ячейки таблицы.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top