2017-08-15 7 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も機能します。 –