Я создаю пользовательскую кнопку с несколькими ярлыками. Я хочу, чтобы иметь возможность изменять цвет текста ярлыков на подсветке/обычном UIControlStates. Я знаю, что его можно изменить цвет текста заголовка, основанный на состояниях управления, но я не могу понять, как это можно сделать для пользовательских меток внутри кнопки. Есть идеи?Изменение цветов ярлыков пользовательского UIButton с несколькими метками
ответ
Это довольно сложно, но у меня есть книга, в которой говорится об этом, это называется Advanced iOS 4 development. в основном вы должны использовать среду выполнения для замены метода setHighlighted.
Edit: это технически для tableviewcells, но его в this под табличном отбеливает
Обратите внимание, что его нужно будет немного изменить, потому что UIButtons имеют разные переменные экземпляра и методы. для этого легко дать тег пользовательским ярлыкам и в setHighlighted: call перевести все в белый на представления с этим тегом. – Rich
Похоже, вы хотите использовать некоторые из унаследованных UIControl методов (например, sendAction: до: forEvent :) Это обеспечивает еще более точное управление, чем с UIButton.
Спасибо за идею @Rich. Я подклассифицировал UIButton и поместил этот код в новый класс.
Heres код, который я использовал:
- (void)setHighlighted:(BOOL)bHighlighted
{
[super setHighlighted:bHighlighted];
if (bHighlighted) {
[label1 setTextColor:[UIColor whiteColor]];
[label2 setTextColor:[UIColor whiteColor]];
}else {
[label1 setTextColor:[UIColor blackColor]];
[label2 setTextColor:[UIColor blackColor]];
}
}
Отлично! Это работает? – Rich
Обычно подклассификация uibutton - настоящая боль, потому что это кластер классов. если вы запустили кнопку после ее инициализации, он скажет что-то вроде UIRoundedRectButton, поэтому, если вы подклассифицируете его, вам придется реализовать кучу его методов. возможно, было бы проще динамически подклассифицировать его, скопировав кнопку пользовательского стиля (например, [UIButton buttonWithType: UIButtonTypeCustom];) введите код для этого здесь: http://davedelong.com/blog/2010/10/07/fun -объектно-c-dynamic-subclassing – Rich
Да, это сработало. Я использую только кнопку для пользовательского типа, поэтому в функции init я вызываю [MyCustomButton buttonWithType: UIButtonTypeCustom]; – lavoy
Код я использовал с @ помощь Рича ниже в отдельном ответе. – lavoy