UILabel textColor属性标记为非空,但默认情况下注释为nil

时间:2018-11-21 18:11:49

标签: swift uilabel

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)

但是让我完全困惑的是,fonttextColor被标记为!因此它们不能为nil(否则会崩溃),但是注释指出

default is nil
我不见了。还是不明白是正确的,还是这是一些文档错误或var被指定为错误!并且应该有?

1 个答案:

答案 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)} }
    }
}