개발일기/IOS

[Swift] - View의 Cycle

코딩하는빵친자 2024. 3. 15. 13:39
  1. loadView : LoadView is only called once: when the view needs to be loaded.
  2. viewDidLoad : Memory에 올림
  3. viewWillAppear
  4. viewWillLayoutSubviews
  5. viewDidLayoutSubviews
  6. viewDidAppear

  • 뷰가 화면에 그려지는 원리Layout(size와 Position)을 토대로 Drawing 정의
  • 뷰는 모두 사각형으로 그려지므로, 메서드 시그니처도 draw(rect:)로 정의된것.
  • 뷰는 Constraints 값을 이용하여 Layout(size와 Position)을 결정
let constraints1 = [
  self.myView.heightAnchor.constraint(equalToConstant: 300),
  self.myView.widthAnchor.constraint(equalToConstant: 300),
  self.myView.centerYAnchor.constraint(equalTo: self.view.centerYAnchor),
  self.myView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
]
NSLayoutConstraint.activate(constraints1)

DispatchQueue.main.asyncAfter(deadline: .now() + 1.5) {
  NSLayoutConstraint.deactivate(constraints1)
  let constraints2 = [
    self.myView.heightAnchor.constraint(equalToConstant: 100),
    self.myView.widthAnchor.constraint(equalToConstant: 100),
    self.myView.centerYAnchor.constraint(equalTo: self.view.centerYAnchor),
    self.myView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
  ]
  NSLayoutConstraint.activate(constraints2)
}

위와 같이 constraint가 변경되면 layout이 바뀌므로 layoutSubviews()가 호출된다.

728x90