[iOS] 뷰의 레이아웃 사이클  - 정리 중..
IT/IOS

[iOS] 뷰의 레이아웃 사이클 - 정리 중..

정리 중입니다...

 

 

iOS의 레이아웃은 다음과 같은 3가지 접근 방식으로 구성이 된다. 

1. frame-based 

2. Autosizing masks

3. Auto Layout

 

iOS의 레이아웃은 언제 구성이 될까?

View Controller의 Life-Cycle 속에서 살펴보기 전에

 

뷰를 그려내는 레이아웃 사이클은 3단계의 과정을 살펴보면 다음과 같다. 

1. Constraint : 뷰들의 Constraint들이 계산되고 설정됨.

2. Layout :  뷰들의 Frame 그리고 그 자식 뷰들의 Frame이 배치된다. 

3. Draw(Display) : layout과 다른 뷰들의 특성(텍스트,크기,색 등)들이 적용된다.

 

이제 사진을 보면서 확인해보자. 

 

loadView : IB에서 구성한 뷰들?이 인스턴스화되는 상태 

viewDidLoad : ViewController에 뷰가 생성된 상태, IBOutlet과 같은 서브뷰들의 인스턴스화

viewWillAppear : 뷰를 그리기 전에 호출됨

-----------1. Constraint------------

updateViewConstraint :  Constraint 업데이트

 

-----------2. Layout---------------

viewWillLayoutSubviews : 레이아웃이 설정되기 전에 불림

layoutSubviews : 레이아웃이 설정? 

viewDidLayoutSubviews : 레이아웃이 다 설정된 이후 불림 

 

-----------3. Draw----------------

drawRect

 

viewDidAppear : 뷰가 모두 그려진 상태

 

추가적인 이해를 위해서는 main run loop를 이해해서 언제 layout, display가 되는지 이해해야함.

-> Update Cycle 를 추가적으로 공부해야함.  -> 출처 4번에서 추가적으로 공부 필요

 

SetNeedsLayout  :  다음 사이클에서 조정 

layoutIfNeeded : 즉시 레이아웃 조정 

 

 

 

 

 

 

 

출처 

1. http://monibu1548.github.io/2019/02/08/layout-cycle/

2. https://blog.naver.com/PostView.naver?blogId=soojin_2604&logNo=222437253619&parentCategoryNo=&categoryNo=64&viewDate=&isShowPopularPosts=false&from=postView  

3. https://daeun28.github.io/%EC%9D%B4%EB%A1%A0/post22/#%EC%B6%9C%EC%B2%98

4.https://medium.com/mj-studio/%EB%B2%88%EC%97%AD-ios-%EB%A0%88%EC%9D%B4%EC%95%84%EC%9B%83%EC%9D%98-%EB%AF%B8%EC%8A%A4%ED%84%B0%EB%A6%AC%EB%A5%BC-%ED%8C%8C%ED%97%A4%EC%B9%98%EB%8B%A4-2cfa99e942f9