2016-12-09 12 views
0

私のアプリでは、特定のラベルのフォントスタイル(System FontまたはBradley Hand)を切り替えるためのボタンがあります。 NSUserDefaultsを使用して変数を保存/ロードすることができました。(Objective C)setFontが私のために働いていない

ストーリーボードでは、デフォルトでラベルにBradleyHandが設定されています(wChR/wChC/wRhCサイズのクラスのバリエーションと一緒に)。

は、次のように私は私のviewWillAppearメソッドを持っている:私は、アプリケーションを実行すると

- (void)viewWillAppear:(BOOL)animated { 
    userDefaults = [NSUserDefaults standardUserDefaults]; 
    NSInteger useScriptFont = [userDefaults integerForKey:@"useScriptFont"]; 
    if(useScriptFont == 0){ //0: switch to system font instead of bradley 
     NSLog(@"Font changed"); 
     CGFloat fontSize = myLabel.font.pointSize; 
     [myLabel setFont: [UIFont systemFontOfSize:fontSize]]; 
    } 
    else{ 
     NSLog(@"No font change"); 
    } 
} 

、それはIF条件に手に入れたが、フォントスタイルは変更されませんでした。

どうしたのですか?ご意見をお聞かせください。

+0

は多分欠けて便利かもしれません[スーパーviewWillAppear:アニメーション]この問題 –

答えて

-3

それは

if(useScriptFont == 0){ //0: switch to system font instead of bradley 
    NSLog(@"Font changed"); 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     CGFloat fontSize = myLabel.font.pointSize; 
     [myLabel setFont: [UIFont systemFontOfSize:fontSize]]; 
    }); 
} 
+3

とは何かを持っている 'viewWillAppearは:'すでにメインスレッドで呼び出す必要があります。 – Larme

+0

すでにメインスレッドに入っています... –

+0

メインスレッドであることは分かっていますが、ストーリーボードにラベルを貼ると、ストーリーボードフォントが使用されます –

関連する問題