作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
你好,我正在尝试将一些样式应用于 Swift 3
代码中的 IBOutlets
。但是,当我尝试从我的代码中引用 IBOutlet
时,只有当我将直接上级 UIView
添加为 IBOutlet
时才有效。
例如(给View内的所有标签元素添加字体样式):
声明
@IBOutlet var exampleView: UIView!
在 ViewDidLoad() 函数中
for case let label as UILabel in exampleView.subviews {
label.font = UIFont(name: "myfont-name", size: 13.0)
}
在这种情况下,label
是 exampleView
的直接子级,这工作正常。但我想在我的应用程序中为动态字体类型更改编写更通用的代码。
当我尝试引用 self.view.subviews
for loop all the labels no mather hierarchy depth 代码不起作用。
例子:
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)
}
}
并使用所需的 View 和字体调用此方法。
关于ios - 如何在 swift 中引用 al subview 层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45610607/
我是一名优秀的程序员,十分优秀!