2016-05-10 22 views
3

私はSwiftを使用しています。私は実行時に動的にUIAppearanceの変化を反映したい。私のビューにはいくつかのラベルとスライダがあります。スライダーはラベルのフォントサイズを決定します。iOS - フォントサイズを動的に変更する

import UIKit 

class ViewController: UIViewController { 

    // Slider for label size 
    @IBOutlet weak var slider: UISlider! 

    // call if slider is changed 
    @IBAction func sliderChanged(sender: AnyObject) { 
     print(slider.value) 
     UILabel.appearance().fontSize = CGFloat(slider.value * 60) // B) this does NOT change any font size 
    } 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     UILabel.appearance().fontSize = 50 // A) this changes font sizes of all labels 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 


} 

// Extension for changing all fontSize of UILabel 
extension UILabel { 
    var fontSize: CGFloat{ 
     get {return self.font.pointSize} 
     set {self.font = UIFont(name: self.font.fontName, size: newValue)} 
    } 
} 

うまく機能し、ページ内のすべてのラベルのフォントサイズを変更するA)ライン。しかし、Bという行はフォントサイズを変更しません。私はページ内のすべてのフォントサイズを動的に変更する方法を知りたいと思います。

(好ましくは、私はページ内のいずれかで、ラベル1を設定する必要はありません)

+3

のサイズを変更できるようによるとしている携帯電話を識別することができます:「ときビューのiOSは、外観の変更を適用しますウィンドウに入ると、すでにウィンドウ内にあるビューの外観は変更されません。現在ウィンドウ内にあるビューの外観を変更するには、ビュー階層からビューを移動して戻します。 – Larme

+0

ありがとうございました。 – redstone

+0

@Jimmyそれは今動作するのですか?あなたは答えてくれますか? – Coder1000

答えて

0

ビューが変更されるたびに、あなたがの実際のサイズを取得することができますViewDidLayoutSubviews(){}関数の呼び出しがあるだろう現在のビューおよびそれに関連して、あなたはそれと画面サイズは、あなたが `UIAppearance`ドキュメントから、フォントサイズやなど

viewDidLayoutSubviews(){ 
    sliderChanged() 
} 

func sliderChanged() { 
    UILabel.appearance().fontSize = CGFloat(slider.value * 60) // B) 
} 
+0

あなたの答えをありがとう。私はその機能を追加しました。しかし、それは私がそれがしたいことは動作しませんでした。 – redstone

関連する問題