我想设置一种方法来更改应用中所有内容的字体大小,以便我可以像访问辅助功能一样。所以我可以将我的字体设置为中小型。我在一个单独的应用程序中测试了这个,通过单击按钮时字体变量发生变化。
我想知道如何刷新视图控制器,用这个新变量重新加载标签。我知道我可以直接对标签这样做,但我想要一种在应用程序中做所有事情的方法。
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 :(得分: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)
}
请注意,为了使此解决方案有效,您必须将所有标签类从UILabel更改为FontSizeAdjustedLabel