2015-05-25 3 views
0

Я хочу настроить способ изменения размера (-их) шрифтов всего в моем приложении, чтобы я мог использовать его как функцию доступности. Поэтому я могу установить, чтобы мой шрифт был маленьким средним и большим. Я тестировал это в отдельном приложении, имея переменную шрифта, которая изменяется, когда я нажимаю кнопки.Обновить контроллер просмотра. Динамический размер шрифта

Мне интересно, как обновить контроллер вида, но перезагрузить ярлык этой новой переменной. Я знаю, что могу сделать это непосредственно на лейбле, но я хочу, чтобы все было в приложении.

import UIKit 

class ViewController: UIViewController { 

@IBOutlet weak var label1: UILabel! 
var fontsize = CGFloat(10) 

@IBAction func small(sender: AnyObject) { 
    fontsize = CGFloat(10) 
} 

@IBAction func big(sender: AnyObject) { 
    fontsize = CGFloat(20) 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    label1.font = UIFont(name: label1.font.fontName, size: fontsize) 
    } 


override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

}

ответ

0

Если вы хотите размер шрифта переоденутся во всех этикетках через приложение вам нужно будет создать пользовательскую метку и добавить наблюдатель на него, как следующее

class FontSizeAdjustedLabel: UILabel { 

/* 
// Only override drawRect: if you perform custom drawing. 
// An empty implementation adversely affects performance during animation. 
override func drawRect(rect: CGRect) { 
    // Drawing code 
} 
*/ 

override init(frame: CGRect) { 

    super.init(frame: frame) 

    NSNotificationCenter.defaultCenter().addObserver(self, selector: "changeFontSize:", name: "FontSizeAdjusted", object: nil) 
} 

required init(coder aDecoder: NSCoder) { 

    super.init(coder: aDecoder) 

    NSNotificationCenter.defaultCenter().addObserver(self, selector: "changeFontSize:", name: "FontSizeAdjusted", object: nil) 
} 

func changeFontSize(notification:NSNotification){ 

    self.font = UIFont(name: self.font.fontName, size: notification.object as! CGFloat) 
} 

} 

, а затем в ваши действия с кнопками просто публикуют уведомление с соответствующим именем

@IBAction func small(sender: AnyObject) { 
    NSNotificationCenter.defaultCenter().postNotificationName("FontSizeAdjusted", object: 10.0) 
} 

@IBAction func big(sender: AnyObject) { 
    NSNotificationCenter.defaultCenter().postNotificationName("FontSizeAdjusted", object: 20.0) 
} 

Notic e, то для того, чтобы это решение работало, вам придется изменить все классы ярлыков от UILabel до FontSizeAdjustedLabel

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