说我有这个扩展程序可以帮助我更改UIViewController
extension UIView {
func changeFontSize(){
let fontSize = CGFloat(5)
if let v = self as? UIButton {
v.titleLabel?.font = v.titleLabel?.font.withSize(fontSize)
print("didChangeFontSizeFor_Button")
} else if let v = self as? UILabel {
v.font = v.font.withSize(fontSize)
} else if let v = self as? UITextField {
v.font = v.font?.withSize(fontSize)
} else {
for v in subviews {
v.changeFontSize()
}
}
}
}
当我这样称呼它时,它工作正常
override func viewDidLayoutSubviews() {
view.changeFontSize()
}
现在问题是,有没有办法让我在所有viewControllers中强制使用它更加动态?
说我们有3个视图控制器,我想创建一些CocoaPods库,人们可以像这样进行简单的调用
forceAppFontSize.fontSize = CGFloat(15)
更改所有其他屏幕的字体大小..
第1课
import UIKit
class v1: UIViewController{
override func viewDidLayoutSubviews() {
print("someCommand1")
print("someCommand2")
}
}
第2课
import UIKit
class v2: UIViewController{
override func viewDidLayoutSubviews() {
print("someCommand")
}
}
第3课
import UIKit
class v3: UIViewController{
}
有没有办法在不破坏原始viewDidLayoutSubviews
的情况下实现这种动态?例如,参见第1类,视图中已经有一些命令未被销毁或替换。
答案 0 :(得分:1)
有一种更简单的方法。您的实际目标是更新应用中的所有观看次数。无需通过每个视图控制器。只需在您应用的主窗口中调用changeFontSize()
扩展程序。