如何在iOS中全局更改字体大小

Dey*_*een 1 ios swift

我正在尝试编写扩展,以更改UIControl组件字体大小

extension UIViewController {

func changeFontSize(){
    for v in self.view.subviews{
        var fontSize = CGFloat(10)
        if let V = v as? UIButton       {V.titleLabel?.font = V.titleLabel?.font.withSize(fontSize)}
        if let V = v as? UILabel        {V.font = V.font.withSize(fontSize)}
        if let V = v as? UITextField    {V.font = V.font?.withSize(fontSize)}
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是一些组件,如UITableView,如何访问单元格元素,以及UITableView节头组件,以便我使扩展也更改所有类型文本字体的所有子视图?

rma*_*ddy 5

您需要一个递归实现,以便进入任何视图的子视图.你的扩展应该是UIView,而不是UIViewController.

extension UIView {
    func changeFontSize(){
        let fontSize = CGFloat(10)
        if let v = self as? UIButton {
            v.titleLabel?.font = v.titleLabel?.font.withSize(fontSize)
        } 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()
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果你想在视图控制器上调用它,简单的做:

someViewController.view.changeFontSize()
Run Code Online (Sandbox Code Playgroud)