Черная кнопка UITableViewCell DetailDisclosure?

Есть ли способ изменить цвет кнопки аксессуара по умолчанию UITableViewCellAccessoryDetailDisclosureButton с синего на черный цвет?


person Rahul Vyas    schedule 15.07.2009    source источник


Ответы (3)


Нет "стандартного" черного, но сделать то, о чем вы просите, не так уж и много.

Создайте (в фотошопе или чем-то подобном) свой собственный черный вариант кнопки раскрытия деталей. Вы можете сделать снимок экрана и раскрасить его, если это проще. Затем добавьте его как ресурс в свой проект и поместите в UIImage следующим образом:

UIImage myImage = [UIImage imageNamed:@"blackbutton.png"];

Затем создайте UIImageView, содержащий это изображение:

UIImageView *imageView = [[UIImageView alloc] initWithImage:myImage];

Наконец, вы можете назначить это «дополнительному виду» для ячейки, которую вы уже настроили:

[cell setAccessoryView:imageView];

Надеюсь, это поможет!

// РЕДАКТИРОВАТЬ - мне захотелось провести 5 минут в фотошопе, поэтому я создал для вас черный. развлекайся!

удалена неработающая ссылка на ImageShack

person h4xxr    schedule 16.07.2009
comment
это 28x28 - я создал его для вас и разместил ссылку на него в моем основном посте. надеюсь, это поможет - person h4xxr; 17.07.2009
comment
Какой красивый жест. Люди на SO замечательные. - person Michael Morrison; 02.05.2010

Ответ от 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];
person newenglander    schedule 19.12.2012

На 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];
person Morrowless    schedule 17.10.2013