Вы даже пытались смотреть на документы?
- Перейти к Ссылка UIButton
- Проверьте свойства
- Ничего очевидного
- Проверьте, есть ли у
UIButton
суперкласс
- Перейти к Справочник по UIControl -
UIButton
суперкласс
- Проверьте свойства
- О, смотрите, есть
state
свойство
Обновление
Принятый ответ немного неверен и может привести к некоторой досадно трудной ошибке, чтобы отследить.
Заголовок для UIControl
объявляет state
как
@property(nonatomic,readonly) UIControlState state; // could be more than one state (e.g. disabled|selected). synthesized from other flags.
Теперь, глядя вверх, чтобы увидеть, как определяется UIControlState
, мы видим
enum {
UIControlStateNormal = 0,
UIControlStateHighlighted = 1 << 0, // used when UIControl isHighlighted is set
UIControlStateDisabled = 1 << 1,
UIControlStateSelected = 1 << 2, // flag usable by app (see below)
UIControlStateApplication = 0x00FF0000, // additional flags available for application use
UIControlStateReserved = 0xFF000000 // flags reserved for internal framework use
};
typedef NSUInteger UIControlState;
Поэтому, поскольку вы имеете дело с битовой маской, вы должны соответствующим образом проверить состояние, например,
if (self.state & UIControlStateNormal) { ... }
Обновление 2
Это можно сделать, нарисовав изображение, а затем установив изображение в качестве фона, например,
- (void)clicked:(UIButton *)button;
{
UIGraphicsBeginImageContext(button.frame.size);
// Draw gradient
UIImage *gradient = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[button setBackgroundImage:image forState:UIControlStateNormal];
}