Как сделать UITableViewCellAccessoryDisclosureIndicator видимым на черном фоне?
-
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 обычным способом, с изображением, которое не было черным (в моем случае, серым заполненным кругом) в том месте, где появляется аксессуар.
Это позволяет стрелке быть видимой и при этом иметь темный/черный цвет фона ячейки таблицы.
Возможно, это не самое кошерное решение, но оно делает стрелку видимой, и я получаю уведомления о щелчках по аксессуарам без создания подклассов и написания большого количества кода.