2017-08-15 90 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也可以。 –