为什么label需要sizeToFit?

Why does label need sizeToFit?

如果不调用sizeToFit,标签是不可见的。这是为什么?

class RootViewController: UIViewController {

    override func loadView() {

        let v = UIView()

        v.backgroundColor = .green

        self.view = v

        let label = UILabel()
        v.addSubview(label)
        label.text = "Hello, World!"

        label.autoresizingMask = [
            .flexibleTopMargin,
            .flexibleLeftMargin,
            .flexibleBottomMargin,
            .flexibleRightMargin]
        label.sizeToFit()
        label.center = CGPoint(v.bounds.midX, v.bounds.midY)
        label.frame = label.frame.integral
    }

}

UIView() 等同于 UIView(frame: CGRect.zero)。所以你的标签的默认大小是零。您正在使用手动布局,这意味着系统不会自动调整标签的大小。因此,无论您分配给它的大小是它的大小。除了调用 sizeToFit() 之外,您的代码没有在任何地方分配大小。因此,如果您不调用 sizeToFit(),您的标签将保留您创建它时使用的零大小。 sizeToFit() 更改其大小以适合其内容,因此您可以实际看到它。