您好,我正在尝试将某些样式应用于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)
}
在这种情况下,
label
是exampleView
的直接子代,可以正常工作。但是我想为我的应用程序中的动态字体类型更改做更多常规代码。当我尝试引用
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/