2016-10-24 14 views
2

私のアプリケーションにはたくさんのラベルがあります。すべてのフォントサイズを変更する最善の方法は何ですか?例:アプリケーション全体のフォントサイズを変更する

func changeFontSize() 
{ 
    var coefficient = 1.0 
    switch device{ 
     case iPadPro: 
      coefficient = 1.2 
     case iPhone5: 
      coefficient = 0.9 
     case iPhone4: 
      coefficient = 0.8 
     ... 
     updateFontSizeInApplication(coefficient)  
} 

これは可能ですか?デバイスごとに、各コントローラの各ラベルに係数を設定する必要がありますか?

+1

あなたは '[UIFont preferredFontForTextStyle:]を使用する必要があり、ユーザ/ iOS搭載ができるように、ラベルのフォントを設定するために'メソッドを適切なフォントサイズを選択します。 – dan

答えて

0

UIFontの拡張機能を実装して、/ sを実装して、サイズを変更したすべてのアプリケーションフォント/フォントを返します。

extension UIFont { 
    class func appFontName(size: CGFloat) -> UIFont { 
     guard let font = UIFont(name: "YourFontName", size: scaledSize(size)) else { 
      return UIFont.systemFontOfSize(scaledSize(size)) 
     } 
     return font 
    } 

    private class func scaledSize(size: CGFloat) -> CGFloat { 
     let coefficient = 1 
     switch device { // pseudocode for checking device type 
     case iPadPro: 
      coefficient = 1.2 
     case iPhone5: 
      coefficient = 0.9 
     case iPhone4: 
      coefficient = 0.8 
     } 
     return size * coefficient 
    } 
} 

使用例:

let textField = UITextField() 
textField.font = UIColor.appFontName(16) // on iPad it will be ~19 

は、それはあなたを刺激しますホープ;)

+0

これはどのようにしてアプリの現在のすべてのラベルのフォントを更新しますか? – rmaddy

+0

さて、そうです。これは、アプリケーションのすべてのラベルを変更する1行のコードではありませんが、アプリケーション全体でフォントを使用してデバイスごとにスケーラブルにする方法です。 – kamwysoc

関連する問題