Подтвердить что ты не робот

UIButton типа UIButtonTypeCustom не будет отображать Title (iPhone)

Я, должно быть, забыл что-то совершенно очевидное? но моя кнопка отображает его изображение и размер правильно, но я просто не могу получить название, которое будет отображаться.

Я сделал очень простой тест, название даже не появляется, когда я это делаю:

    CGRect frameBtn = CGRectMake(160.0f, 150.0f, 144.0f, 42.0f);
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button setImage:[UIImage imageNamed:@"left_halfscreen_button.png"] forState:UIControlStateNormal];
    [button setTitle:@"Hello" forState:UIControlStateNormal];
    [button setFrame:frameBtn];
    NSLog(@"Title:%@", [button currentTitle]);
    //prints "Title:Hello
    [self addSubview:button];

У меня есть класс factory, который генерирует пользовательские кнопки для меня, и я думал, что перепутал некоторые детали там, поэтому я переместил вышеуказанный код непосредственно в мой UIView, заголовок все еще пуст.

Является ли это ошибкой, или я просто пропускаю что-то прямо перед глазами.

Спасибо за дополнительный набор глаз:)

4b9b3361

Ответ 1

Изображение отменяет название, вам нужно сделать фоновое изображение для отображения названия.

[button setBackgroundImage:[UIImage imageNamed:@"left_halfscreen_button.png"] 
        forState:UIControlStateNormal];

Ответ 2

Я просто применил spome довольно похожую проблему... Просто установите цвет заголовка, я думаю, что текущий - белый;)

[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

Ответ 3

Я нашел проблему!

Это не изображение, переопределяющее заголовок. Изображение нажимается на изображение.

Попробуйте использовать это:

[btn setTitleEdgeInsets:UIEdgeInsetsMake(0.0, -img.size.width, 0.0, 0.0 )];

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

Ответ 4

Когда вы используете UIButton, кнопка использует некоторый встроенный размер для своего фрейма.

Вы должны установить фрейм:

button.frame = CGRectMake(0, 0, width, height);

или даже лучше и комфортно:

[button sizeToFit];

Ответ 5

У меня была аналогичная проблема, что название не было показано. Я забыл установить свойство frame:

//set the position of the button
button.frame = CGRectMake(100, 170, 100, 30);