UIButton setTitle: forState: question - PullRequest
       2

UIButton setTitle: forState: question

14 голосов
/ 06 декабря 2010

Почему работает следующий код:

[signInBtn setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted];
[signInBtn setTitleColor:[UIColor blackColor] forState:UIControlStateDisabled];

, а это не так:

[signInBtn setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted|UIControlStateDisabled];

Ответы [ 3 ]

29 голосов
/ 24 января 2013

Я знаю, что это старый вопрос, но эти ответы не верны.

Когда вы устанавливаете каждый по отдельности, вы говорите, что свойство state должно быть UIControlStateHighlighted ИЛИ UIControlStateDisabled, но НЕ оба

Когда вы поразрядно или их вместе, вы заявляете, что они ОБАустановить в свойстве state.Значение UIControlStateHighlighted AND UIControlStateDisabled устанавливается в свойстве state.

Пример кода ниже прекрасно иллюстрирует мою точку зрения.Если вы не согласны, запустите его для себя.

[button setTitle:@"highlighted and selected" forState:UIControlStateHighlighted | UIControlStateSelected];
[button setTitle:@"Highlighted only" forState:UIControlStateHighlighted];
[button setTitle:@"Selected only" forState:UIControlStateSelected];
[button setTitle:@"Normal" forState:UIControlStateNormal];

NSLog(@"Normal title: %@", [[button titleLabel] text]); // prints title: Normal

[button setSelected:YES];

NSLog(@"Selected title: %@", [[button titleLabel] text]); // prints title: Selected only 

[button setSelected:NO];
[button setHighlighted:YES];

NSLog(@"highlighted title: %@", [[button titleLabel] text]); // prints title: Highlighted only

[button setSelected:YES];

NSLog(@"highlighted and selected title: %@", [[button titleLabel] text]); // prints title: highlighted and selected
2 голосов
/ 06 декабря 2010

Поскольку метод setTitleColor: forState: может принимать только известный UIControlState и вы ORing двух значений UIControlState вместе.

Каждый UIControlState (на низком уровне), скорее всего, является простой целочисленной константой.

Обновление:

Это битовая маска, что делает ее более странной, что она не работает, но моя точка зрения остается неизменной.(Он тревожно наклоняется в сторону и опасно покачивается.)

0 голосов
/ 08 февраля 2012

Это может быть ошибка.Попробуйте изменить битовую маску с неожиданным значением, таким как UIControlStateHighlighted & UIControlStateDisabled, и все цвета состояния будут одинаковыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...