2013-05-25 1 views
0

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

У меня есть кнопка в ячейке. Ячейка показывает зарегистрированных пользователей facebook друзей. Если они уже являетесь пользователем приложения он показывает кнопки, как Play, иначе она показывает Пригласите меня ...

UIButton *playButton = (UIButton *)[cell.contentView viewWithTag:30]; 
playButton.backgroundColor = [UIColor clearColor]; 
[playButton setBackgroundImage:[[UIImage imageNamed:@"fbCell_Invite_30h"] resizableImageWithCapInsets:UIEdgeInsetsMake(15, 5, 15, 5)] forState:UIControlStateNormal];  
playButton.titleLabel.text = @"Invite me"; 
if ([self.fbFriendsUsingApp containsObject:[friend valueForKey:@"id"]]) { 
    playButton.titleLabel.text = @"Play"; 
} 

Это все прекрасно работает и не является проблемой. Однако, когда текст кнопки пригласите меня это показывает, как это: enter image description here

В раскадровке интерфейса строитель кнопка установлена ​​так: enter image description here

Что странно, что если я нажимаю средняя стрелка < - -----> чтобы растянуть ширину, текст заголовка перестает работать, и все они показывают «Play» ???

ответ

3

Попробуйте установить текст кнопки с помощью

[playButton setTitle:@"Invite Me" forState:UIControlStateNormal];

вместо

playButton.titleLabel.text = @"Invite Me;

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

+0

Спасибо, не подумал об этом. – StuartM

0

Вы можете найти размер NSString, что вы устанавливаете в качестве метки кнопки, а затем изменить размер кнопки соответственно:

CGSize labelSize = [labelString sizeWithFont:[UIFont systemFontOfSize:12]]; 
[button setFrame:CGRectMake(10,0,labelSize.width, labelSize.height)]; 

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