您好,我正在尝试将某些样式应用于IBOutlets代码中的Swift 3。但是,当我尝试从我的代码中引用IBOutlet时,仅当我将直接上级的UIView添加为IBOutlet时才有效。

例如(将字体样式添加到View中的所有标签元素):

宣言

@IBOutlet var exampleView: UIView!

内部ViewDidLoad() func
for case let label as UILabel in exampleView.subviews {
            label.font = UIFont(name: "myfont-name", size: 13.0)
}

在这种情况下,labelexampleView的直接子代,可以正常工作。但是我想为我的应用程序中的动态字体类型更改做更多常规代码。

当我尝试引用self.view.subviews循环所有标签时,没有更深层次的代码,该代码将无法正常工作。

例:
for case let label as UILabel in self.view.subviews {
            label.font = UIFont(name: "myfont-name", size: 13.0)
}

最佳答案

为此使用递归

func setFontToSubviews(view:UIView, font: UIFont) {
    for subview in view.subviews {
        if let label = subview as? UILabel {
             label.font = font
        }
        setFontToSubviews(view:subview, font:font)
    }
}

并使用所需的视图和字体调用此方法。

关于ios - 如何快速引用 subview 层次结构,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45610607/

10-10 23:24
查看更多