2016-12-26 2 views
1
self.name.font = [UIFont fontWithName:@"OpenSans" size:17.0]; 
self.name.textColor = [UIColor redColor]; 

«имя» имеет тип UILabel. Я устанавливаю font и colorUILabel. Я вижу красную color, как только открываю страницу (мой контролер просмотра). Тем не менее, шрифт изначально имеет правильный size 14 и требует некоторых обновлений. Если я когда-нибудь останусь на странице, шрифт автоматически обновится до его нового size 17.UILabel шрифта требуется время, чтобы обновить

Почему существует отставание в обновлении свойств 2?

+0

Вы можете добавили статический текст в файле раскадровки. Попробуйте удалить это. – SNarula

+0

Где вы пишете этот код? (в каком методе). и что вы установили для этого ярлыка в вашем файле раскадровки/xib? – Shreyank

+0

@SNarula Я удалил статический текст, связанный с именем UILabel 'из моего .xib-файла. Тем не менее требуется время для ускорения. –

ответ

2

Возможно, вы обновляете элементы ui вне основной темы.

Все элементы ui должны быть обновлены в основной теме. Не делать этого может привести к несогласованности ui, задержке обновления, а иногда и сбоям.

Если вы не в главной теме и хотите обновить элементы ui. Проверьте 2-й и 3-й ответ (который не принимается) в iOS - Ensure execution on main thread, чтобы это знать.

+0

Поместите мой комментарий внутри dispatch_async (dispatch_get_main_queue(),^{}); и отлично работал! Благодаря! –

+0

На самом деле заменил его на [[NSOperationQueue mainQueue] addOperationWithBlock:^{ // Ваш код здесь NSLog (@ "Основной код темы"); }]; потому что, по-видимому, есть некоторые проблемы, связанные с предыдущим подходом, как описано в переполнении стека post –

+0

Нет, нет ничего плохого в вызове 'dispatch_async (dispatch_get_main_queue(),^{});' даже если вы уже находитесь в главной очереди , – Rikh

0

Проверьте, существует ли файл шрифта и что имя шрифта такое же, как @ "OpenSans", также и capitals.

Это может быть из-за несоответствия имени шрифта

Вы можете проверить все шрифты в приложение по:

NSArray *familyNames = [[NSArray alloc] initWithArray:[UIFont familyNames]]; 
NSArray *fontNames; 
NSInteger indFamily, indFont; 
for (indFamily=0; indFamily<[familyNames count]; ++indFamily) 
{ 
    NSLog(@"Family name: %@", [familyNames objectAtIndex:indFamily]); 
    fontNames = [[NSArray alloc] initWithArray: 
       [UIFont fontNamesForFamilyName: 
        [familyNames objectAtIndex:indFamily]]]; 
    for (indFont=0; indFont<[fontNames count]; ++indFont) 
    { 
     NSLog(@" Font name: %@", [fontNames objectAtIndex:indFont]); 
    } 
} 
Смежные вопросы