2014-01-28 5 views
1

Я сейчас разрабатываю приложение для ios 6. Это своего рода приложение для проектирования форм, в котором я обнаружил, что если мы изменим значение titlelabel.textColor в приложении, то, если мы изменим шрифт, то textColor изменится на значение по умолчанию во время выделения. Я проверил это, как показано нижеНастройка шрифта titleLabel UIButton изменяет значение textColor по умолчанию?

я перетащить кнопку образец для моего образца ViewController и создать свойство IBOutlet имени myButton в viewcontroller.h файле в -viewDidLoad

[myButton.titleLabel setTextColor:[UIColor redColor]]; 

и кнопки действий я сделал, как показано ниже

- (IBAction)btnLoginClicke:(UIButton *)sender { 
    [myButton.titleLabel setFont:[UIFont fontWithName:@"Arial" size:18]]; 

ниже мои до и после скриншоты действия кнопки нажмите

enter image description here

enter image description here

ответ

1

Если вы установите цвет вашего заголовка UIButton с помощью:

[myButton setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; 

информация о цвете не будет потеряна при назначении нового шрифта.

Я предполагаю, что это связано с тем, что класс UIButton внутренне настраивает цвет textLabel на основе различных цветов, которые вы установили, используя setTitleColor (или раскадровку) для разных состояний UIButton. Изменение непосредственно цвета textLabel не изменит цвет, который UIButton сохранил для каждого из этих состояний, и они будут повторно применяться каждый раз, когда UIButton должен перерисовать себя. Это то, что происходит при настройке нового шрифта - UIButton должен перерисовываться, но он будет делать это, используя настройку цвета через setTitleColor: forState :.

5

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

Поместите эти линии в свой appDelegate по методу didFinishLaunchWithOptions.

[[UIButton appearance] setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; 
[[UIButton appearance] setTitleColor:[UIColor greenColor] forState:UIControlStateHighlighted]; 

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

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