您好我正在尝试从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循环时,所有标签没有mather层次结构深度,代码不起作用。
示例:
for case let label as UILabel in self.view.subviews {
label.font = UIFont(name: "myfont-name", size: 13.0)
}
答案 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)
}
}
并使用所需的视图和字体调用此方法。