在UILabel
的Apple类中
open class UILabel : UIView, NSCoding, UIContentSizeCategoryAdjusting {
open var text: String? // default is nil
open var font: UIFont! // default is nil (system font 17 plain)
open var textColor: UIColor! // default is nil (text draws black)
但是让我完全困惑的是,font
和textColor
被标记为!因此它们不能为nil
(否则会崩溃),但是注释指出
default is nil
我不见了。还是不明白是正确的,还是这是一些文档错误或var被指定为错误!并且应该有?
答案 0 :(得分:0)
在操场上尝试
import UIKit
let label = UILabel()
label.font = UIFont.systemFont(ofSize: 45)
print(label.font)
label.font = nil
print(label.font)
这将是结果:
Optional(<UICTFont: 0x7ff122c059d0> font-family: ".SFUIDisplay"; font-weight: normal; font-style: normal; font-size: 45.00pt)
Optional(<UICTFont: 0x7ff122e04390> font-family: ".SFUIText"; font-weight: normal; font-style: normal; font-size: 17.00pt)
似乎是可选的,在我看来,这仅仅是设置默认值的工具。想象一下它不是可选的情况。没有简单的方法可以将其重新设置。我敢打赌,如果在Swift中会是这样:
class Label {
var font: UIFont! = nil {
//Set some default font in here
didSet { if font == nil { font = UIFont.systemFont(ofSize: 17)} }
}
}