为什么label需要sizeToFit?

时间:2017-08-15 17:21:16

标签: uikit autoresizingmask

如果未调用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
    }

}

1 个答案:

答案 0 :(得分:0)

UIView()UIView(frame: CGRect.zero)相同。因此,标签的默认大小为零。您正在使用手动布局,这意味着系统不会自动调整您的标签大小。因此,无论你分配给它的大小是它的大小。除了对sizeToFit()的调用之外,您的代码不会在任何位置指定大小。因此,如果您不致电sizeToFit(),您的标签将保留您创建的零尺寸。 sizeToFit()更改其大小以适合其内容,因此您实际上可以看到它。