07 January 2014

뷰 이벤트

viewDidLoad

컨트롤러 뷰가 메모리에 적재된 후에 호출됩니다.

viewWillAppear

뷰가 뷰 계층 구조에 추가되기 직전에 뷰 컨트롤러에게 알려줍니다.

viewDidAppear

뷰가 뷰 계층 구조에 추가되고 뷰 컨트롤러에게 알려줍니다.

viewWillDisappear

뷰가 뷰 계층 구조에서 제거되기 직전에 뷰 컨트롤러에게 알려줍니다.

viewDidDisappear

뷰가 뷰 계층 구조에서 제거되고 뷰 컨트롤러에게 알려줍니다.

왜 viewDidLoad에서는 landscape일 경우 정상적인 값을 안주는 가?

viewDidLoad는 화면이 회전하기 전에 이벤트가 발생합니다. 따라서 항상 초기값은 portrait mode로 되어 있어 viewDidLoad에서 화면의 크기를 구하려고 한다면 항상 portrait 크기를 얻게 됩니다.

두가지 방법을 사용할 수 있습니다. 첫번째는 viewDidAppear을 호출하여 거기에서 값을 얻는 방법입니다. 이는 뷰가 뷰 계층 구조에 추가가 되고 난 후이므로 화면 회전이 일어난 후 이므로 landscape 화면 크기를 얻을 수 있습니다.

두번째 방법은 가로와 세로를 변경하여 사용하는 방법입니다. 이는 화면이 생성되기 전이므로 landscape로 되는 것을 예상하고 가로와 세로의 크기를 변경 사용하도록 합니다.