UIButton типа UIButtonTypeCustom не будет отображать заголовок (iPhone) - PullRequest
40 голосов
/ 24 марта 2010

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

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

    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];

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

Это ошибка или я просто что-то упускаю прямо перед глазами.

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

Ответы [ 5 ]

90 голосов
/ 24 марта 2010

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

[button setBackgroundImage:[UIImage imageNamed:@"left_halfscreen_button.png"] 
        forState:UIControlStateNormal];
28 голосов
/ 29 сентября 2010

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

[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
13 голосов
/ 13 октября 2011

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

Это изображение не переопределяет название. Это отталкивает кадр от изображения.

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

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

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

3 голосов
/ 10 ноября 2012

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

Вы должны установить кадр:

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

или даже лучше и удобнее:

[button sizeToFit];
0 голосов
/ 19 октября 2010

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

//set the position of the button
button.frame = CGRectMake(100, 170, 100, 30);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...