如何在swift中引用al子视图层次结构

时间:2017-08-10 10:04:20

标签: ios swift xcode swift3 uiview

您好我正在尝试从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循环时,所有标签没有mather层次结构深度,代码不起作用。

示例:

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

1 个答案:

答案 0 :(得分:3)

为此

使用递归
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)
    }
}

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