상세 컨텐츠

본문 제목

[iOS] 뷰의 상태 변화 메서드

Tech/Mobile

by 2021. 3. 24. 13:37

본문

뷰의 상태변화 감지 메서드

뷰가 화면에 보여지는 상태의 변화나 뷰의 레이아웃에 변화가 생기면 뷰 컨트롤러는 여러가지 메서드를 호출해 서브클래스가 적절한 대응을 할 수 있게 합니다. 뷰의 상태 변화에 따라 호출되는 메서드와, 각 메서드가 호출되는 시점에 수행하면 좋은 작업을 알아봅시다.

 

 

뷰의 상태변화 메서드 (출처: 부스트코스 iOS 앱 프로그래밍)

 

 

뷰의 상태변화 메서드

func viewDidLoad()

- 뷰 계층이 메모리에 로드된 직후 호출되는 메서드

- 뷰의 추가적인 초기화 작업을 하기 좋은 시점

- 메모리에 처음 로딩될 때 1회 호출되는 메서드로, 메모리 경고로 뷰가 사라지지 않는 이상 다시 호출되지 않음.

func viewWillAppear(_animated: Bool)

- 뷰가 뷰 계층에 추가되고 화면이 표시되기 직전에 호출되는 메서드

- 뷰의 추가적인 초기화 작업을 하기 좋은 시점

- 다른 뷰로 이동했다가 되돌아오면 재호출되는 메서드로, 화면이 나타날 때마다 수행해야하는 작업을 하기 좋은 시점

func viewDidAppear(_animated: Bool)

- 뷰가 뷰 계층에 추가되어 화면이 표시되면 호출되는 메서드

- 뷰를 나타내는 것과 관련된 추가적인 작업을 하기 좋은 시점

func viewWillDisappear(_animated: Bool)

- 뷰가 뷰 계층에서 사라지기 직전에 호출되는 메서드

- 뷰가 생성된 뒤 발생한 변화를 이전상태로 되돌리기 좋은 시점

func viewDidDisappear(_animated: Bool)

- 뷰가 뷰 계층에서 사라진 후 호출되는 메서드

- 뷰를 숨기는 것과 관련된 추가적인 작업을 하기 좋은 시점

- 시간이 오래 걸리는 작업은 하지않는 것이 좋음.

 

뷰의 레이아웃 변화 메서드

뷰가 생성된 후 바운드 및 위치 등의 레이아웃에 변화가 발생했을 때 호출되는 메서드입니다.

func viewWillLayoutSubviews()

- 뷰가 서브뷰의 레이아웃을 변경하기 직전에 호출되는 메서드

- 서브뷰의 레이아웃을 변경하기 전에 수행할 작업을 하기 좋은 시점

func viewDidLayoutSubviews()

- 서브뷰의 레이아웃이 변경된 후 호출되는 메서드

- 서브뷰의 레이아웃을 변경한 후 추가적인 작업을 수행하기 좋은 시점

 

 

사용 방법

뷰 컨트롤러에서 아래와 같이 override 키워드를 명시하고 super를 호출한 뒤 사용!

 

override func viewDidLoad() {
  super.viewDidLoad()
  //view가 메모리에 적재된 시점에서 필요한 코드 작성
}

 

 

(출처 : 부스트코스 iOS 앱 프로그래밍)

관련글 더보기