Есть ли способ изменить цвет кнопки аксессуара по умолчанию UITableViewCellAccessoryDetailDisclosureButton
с синего на черный цвет?
Черная кнопка UITableViewCell DetailDisclosure?
Ответы (3)
Нет "стандартного" черного, но сделать то, о чем вы просите, не так уж и много.
Создайте (в фотошопе или чем-то подобном) свой собственный черный вариант кнопки раскрытия деталей. Вы можете сделать снимок экрана и раскрасить его, если это проще. Затем добавьте его как ресурс в свой проект и поместите в UIImage следующим образом:
UIImage myImage = [UIImage imageNamed:@"blackbutton.png"];
Затем создайте UIImageView, содержащий это изображение:
UIImageView *imageView = [[UIImageView alloc] initWithImage:myImage];
Наконец, вы можете назначить это «дополнительному виду» для ячейки, которую вы уже настроили:
[cell setAccessoryView:imageView];
Надеюсь, это поможет!
// РЕДАКТИРОВАТЬ - мне захотелось провести 5 минут в фотошопе, поэтому я создал для вас черный. развлекайся!
удалена неработающая ссылка на ImageShack
Ответ от h4xxr у меня не полностью сработал в iOS 5.1.1 (нажатие на вспомогательное представление не вызвало метод tableView:accessoryButtonTappedForRowWithIndexPath
), поэтому я изменил его решение с помощью этого связанного answer, используя UIButton
с изображением, а не UIView
, который может вызывать настраиваемый селектор при нажатии:
UIImage *myImage = [UIImage imageNamed:@"blackaccessorybutton.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(0, 0, myImage.size.width, myImage.size.height);
[button setImage:myImage forState:UIControlStateNormal];
[button addTarget: self
action: @selector(toggleCustomDetailDisclosureButton:)
forControlEvents: UIControlEventTouchUpInside];
[cell setAccessoryView:button];
На iOS7 есть гораздо более простое решение. Используйте свойство tintColor
на UIView
. Подклассы обычно уважают его, и индикатор раскрытия информации не является исключением.
UIView *v = [[cell subviews] lastObject];
v = v.subviews.count ? [v.subviews objectAtIndex:0] : nil; // v is the disclosure indicator
if ([v respondsToSelector:@selector(setTintColor:)])
v.tintColor = [UIColor greenColor];