UIButton titleLabel не отображается
Я видел кучу подобных вопросов, но никто не получил ответ, который я ищу. Когда я использую этот код для создания UIButton и устанавливаю его titleLabel, появляется UIButton, но titleLabel не будет отображаться.
UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 50, 50)];
[button setBackgroundImage:[UIImage imageNamed:@"button.png"] forState:UIControlStateNormal];
button.titleLabel.text = @"Title";
button.titleLabel.font = [UIFont fontWithName:@"System-Bold" size:25.0f];
[self.view addSubview:button];
Этот код отображает кнопку, но не titleView, ее название. Почему это может быть? Я разрабатываю для iOS 6 и выше.
ПРИМЕЧАНИЕ 1: Я не ищу такой вариант:
[button setTitle:@"Title" forState:UIControlStateNormal];
Потому что я должен использовать titleLabel, чтобы установить его font и fontSize.
ПРИМЕЧАНИЕ 2. Я не могу создать UILabel и добавить его в качестве подвидной кнопки. Так как кнопка позже анимация.
Ответы
Ответ 1
Вы всегда должны указывать ControlState при обновлении названия кнопки!
Для UIButtons существует четыре возможных значения:
UIControlStateNormal
UIControlStateHighlighted
UIControlStateDisabled
UIControlStateSelected
так, например:
[button setTitle:@"Title" forState:UIControlStateNormal];
а затем вы можете установить пользовательские настройки для titleLabel:
[button.titleLabel setFont:[UIFont fontWithName:@"Zapfino" size:20.0]];
[button.titleLabel setTextColor:[UIColor blueColor]];
Ответ 2
[button setTitle:@"Title" forState:UIControlStateNormal];
Правильный способ установки строки заголовка.
titleLabel используется для установки шрифта и цвета.
Ответ 3
Попробуйте использовать...
[button setNeedsLayout];
[button layoutIfNeeded];
Это заставит кнопку обновлять макет.