100 days of Swift - Day 36 (layoutMarginGuide vs SafeAreaLayoutGuide)

2183 ワード

コードを使用してビューを作成する場合は、loadView()メソッドを呼び出してユーザーインタフェースを作成し、ビューを初期化し、viewDidLoad()で他の操作を実行する必要があります.

ViewControllerのlifeCycle
  • ストーリーボードやxibなどのビューが存在しない場合は、viewDidLoad()の前にloadView()が呼び出されます.
  • 
    override func loadView() {
    	view = UIView()
        	view.backgroundColor = .white
    }
    
  • の新しいUIView()インスタンスを生成し、ViewControllerビューに割り当てます.
  • 
    NSLayoutConstraint.activate([
    	scoreLabel.topAnchor.constraint(equalTo: view.layoutMarginsGuide.topAnchor),
        	scoreLabel.trailingAnchor.constraint(equalTo: view.layoutMarginsGuide.trailingAnchor)
    ])
        
  • 自動レイアウト制約が多数ある場合、isActive=trueを作成するよりも、制約配列を受け入れるNSLayoutConstraint.activate()メソッドを使用して、すべての操作を一度に実行します.
  • UImitには、ビューを固定するための複数のウィザードが用意されています.最もよく使われるのはsafeAreLayoutGuideとlayoutMargins Guideです.

    safeAreaLayoutGuide


    :フィレットと溝以外の空き領域

    layoutMarginsGuide


    :ビューが左端と右端で動作しないように余白を追加します.

    safeAreaLayoutGuide vs layoutMarginsGuide



    二つの
  • が重なり、妖精にも違いがある.
  • topはbottomと同じで、前後に空白の差があります.
  • 
    cluesLabel.setContentHuggingPriority(UILayoutPriority(1), for: .vertical)
    answersLabel.setContentHuggingPriority(UILayoutPriority(1), for: .vertical)
    
  • コンテンツハグ優先度:ビューは、内部コンテンツサイズよりも大きい可能性を決定する.優先度が高いほど増加したくないことを意味し、低いほど増加しやすい.
  • では、指定する前にdefaultに設定する優先度は何でしょうか.

    上図に示すように、UIViewのcontenthuggingPrityから見ると、垂直、水平ともに250、250である.

    オブジェクトごとにデフォルトの優先度が異なります.
    default優先度ピクチャソース:stackoverflow