我正在尝试编写扩展,以更改UIControl组件字体大小
extension UIViewController {
func changeFontSize(){
for v in self.view.subviews{
var fontSize = CGFloat(10)
if let V = v as? UIButton {V.titleLabel?.font = V.titleLabel?.font.withSize(fontSize)}
if let V = v as? UILabel {V.font = V.font.withSize(fontSize)}
if let V = v as? UITextField {V.font = V.font?.withSize(fontSize)}
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是一些组件,如UITableView,如何访问单元格元素,以及UITableView节头组件,以便我使扩展也更改所有类型文本字体的所有子视图?
您需要一个递归实现,以便进入任何视图的子视图.你的扩展应该是UIView,而不是UIViewController.
extension UIView {
func changeFontSize(){
let fontSize = CGFloat(10)
if let v = self as? UIButton {
v.titleLabel?.font = v.titleLabel?.font.withSize(fontSize)
} else if let v = self as? UILabel {
v.font = v.font.withSize(fontSize)
} else if let v = self as? UITextField {
v.font = v.font?.withSize(fontSize)
} else {
for v in subviews {
v.changeFontSize()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果你想在视图控制器上调用它,简单的做:
someViewController.view.changeFontSize()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
518 次 |
| 最近记录: |