-
[iOS] layoutIfNeeded 함수에 대해 알아보자카테고리 없음 2023. 3. 31. 18:46
오늘은 layoutIfNeeded 함수에 대해 알아봅시다.
기본적인 Life Cycle 에 대해서는 알고 가정하고 진행하겠습니다.
layoutIfNeeded 함수는 한 마디로 view 의 layout 을 갱신시키고 싶을 때 사용하는 함수 입니다!
iOS 에서는 초당 60번 정도 View 를 업데이트 한다고 합니다.
즉, 1/60 초 마다 화면을 업데이트 해준다는거겠죠?
근데 만약에 1/60 초를 기다리지 않고 바로 view 를 업데이트 하고 싶을 수도 있잖아요??
이럴때 layoutIfNeeded 함수를 호출해주면 됩니다!
자 조금 더 자세하게 설명해보자면, 아래와 같은 Main Run Loop 와 Update Cycle 을 가지고 있습니다.
각각에 대해 알아보도록 하죠

- Main Run Loop
터치, 회전과 같은 이벤트 들을 처리하는 역할
- Update Cycle
Main Run Loop 에서 들어온 이벤트 들을 처리하는 역할 (ex. layout 재배치, view 다시그리기)
만약에 제가 버튼을 눌러서 A라는 view의 높이가 변했다고 가정합시다.
그러면 버튼을 눌렀을때의 이벤트는 Main Run Loop 에 쌓이고, A view의 높이 변경은 Update Cycle 에서 처리하는 겁니다!
이처럼 view의 layout, position 을 변경하게 될 경우, Main Run Loop에서 즉각적으로 처리되지 않습니다. 일종의 시간차가 있다고 생각하시면 됩니다 ㅎㅎ
즉각적으로 처리하려면 layoutIfNeeded 함수를 호출하면 됩니다!!!
유사한 기능을 하는 함수가 있는데 layoutIfNeeded 함수는 동기적으로 실행되며, 애니메이션에 적용하면 즉시 반영되어 눈에 보일 겁니다!!