2013-08-29 1 views
1

Я добавил кнопку в построителе интерфейса и ссылался на них, тогда я хочу изменить их шрифт названия, но он действительно работает. Когда я использую:UIButton.titlelabel setfont не работает

[_button setFont:[UIFont fontWithName:APP_FONT_FUTURASTD_LIGHT size:24.0f]]; 

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

[_button.titleLabel setFont:[UIFont fontWithName:APP_FONT_FUTURASTD_LIGHT size:24.0f]]; 
_button.titleLabel.font = [UIFont fontWithName:APP_FONT_FUTURASTD_LIGHT size:24.0f]; 

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

Кнопка как:

@property (nonatomic, weak) IBOutlet UIButton *button; 

и добавил в раскадровке.

шрифт определен:

#define APP_FONT_FUTURASTD_LIGHT @"FuturaStd-Light" 

и добавлены к Info.plist разделе "Шрифты, предусмотренных приложением".

+0

Этот ответ кажется, что ваш альтернативный код должен работать нормально: http: // stackoverflow.com/questions/4206848/setfont-deprecated – trojanfoe

+0

Я видел этот вопрос, попробовал, но он ничего не делает. Он не показывает предупреждение/ошибку и не меняет шрифт. Вот почему я смутился. –

+1

ОК, следующая вещь, которую нужно проверить для «ниль» кнопки или шрифта ... – trojanfoe

ответ

2

Я выяснил, в чем проблема. Другой программист, который начал этот проект поставил

[[UIButton appearance] setFont:[UIFont fontWithName:APP_FONT_FUTURASTD_BOLD size:12.0f]]; 

в CSAppDelegate.m и поэтому все мои настройки были перезаписаны этим.

Таким образом, для тех, кто настраивает шрифт кнопок в глобальном масштабе, вы не сможете затем настроить шрифт некоторых кнопок по-разному. И второй совет, если вы продолжаете работать после того, как кто-то еще удостоверится, что они дают вам техническую документацию или объясняют вам, что и как они делали.

EDIT

Однако вы можете установить внешний вид для одного представления в viewWillAppear, а затем установить его обратно к тому, что у вас есть в вашем CSAppDelegate.m в viewDidAppear вида.

EDIT

Сейчас этот код амортизируется, так что вы должны использовать это вместо того, чтобы:

[[[UIButton appearance] titleLabel] setFont:UIFont]; 
+0

Теперь, когда это устарело, каков новый способ сделать это? – valheru

+1

Это новый способ работы [[[UIButton appearance] titleLabel] setFont: UIFont]; –

-5

Пожалуйста, удалите AutoLayout, если вы использовали с Xib.It будет работать нормально. Я думаю, что это помогает вам.

+0

Я использую раскадровку и AutoLayout не проверяется. –

+0

Даже если AutoLayout присутствует, кнопка должна взять шрифт. –

+0

Что Autolayout имеет отношение к шрифту на кнопке? – Abizern

1

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

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

// List all fonts on iPhone 

for (NSString* family in [UIFont familyNames]) 
{ 
    NSLog(@"%@", family); 

    for (NSString* name in [UIFont fontNamesForFamilyName: family]) 
    { 
     NSLog(@" %@", name); 
    } 
} 

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

+0

Я уже писал, что Шрифт в порядке. И я уже создал свой ответ на этот вопрос. Проблема была в глобальном появлении UIButton, вы можете прочитать его в моем ответе. Но все же спасибо за ответ, этот фрагмент кода, который вы написали, может пригодиться в будущем. –

Смежные вопросы