2017-08-15 88 views
0

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

} 

回答

0

UIView()是一回事UIView(frame: CGRect.zero)。所以你的标签的默认大小是零。您正在使用手动布局,这意味着系统不会自动调整您的标签大小。因此,无论您分配的尺寸是多少,都会有多大。除了致电sizeToFit()之外,您的代码不会在任何地方分配大小。因此,如果您不打电话sizeToFit(),您的标签将保留您创建的零大小。 sizeToFit()更改其大小以适应其内容,因此您可以真正看到它。

+0

Autolayout也可以。 –