반응형
왜 오토 레이아웃을 사용할 때는 translatesAutoresizingMaskIntoConstraints = false를 할까?
부모뷰가 커지거나 줄어듦에 따라 서브 뷰의 크기나 위치를 조정하는 방식을 결정하는 Autoresizing이라는 개념이 존재한다. 이 개념은 여러 속성을 부여하여 슈퍼뷰의 크기 변화에 따라 서브 뷰의 width, height 혹은 leading, top, trailing, bottom 영역을 유연하게 고정하거나 확장할 수 있다.
이러한 Autosizing은 AutoresizingMask를 통해 적용할 수 있는데, 슈퍼 뷰의 bounds가 변경 될 때 자신의 크기를 조정하는 방법을 결정하는 비트마스크이다.
다만 Autoresizing과 AutoLayout을 동시에 사용하고자 할 경우 주의해야한다. View의 AutoresizingMask도 결국 Auto Layout의 constraints로 변환되면서 기존의 constraints와 레이아웃 충돌이 일어날 수 있기 때문이다.
따라서 우리는 AutoLayout을 사용하고자 할 때 translatesAutoresizingMaskIntoConstraints라는 옵션을 false로 설정해 AutoresizingMask를 사용한 Constraints 변환을 막는 것이다. 아울러 스토리보드에서는 오토 레이아웃이 적용된 View의 translatesAutoresizingMaskIntoConstraints를 자동으로 false 설정해준다. 그래서 코드로 오토 레이아웃을 조정할때만 해당 옵션을 설정해주었던 것이다.
참고
반응형
'🍎 Apple > Question' 카테고리의 다른 글
[iOS] Remote data를 가져올 때 Data(contentsOf:)를 사용하면 안되는 이유 (1) | 2022.05.17 |
---|---|
[UIKit] dequeueReusableCell (withIdentifier:for:) vs (withIdentifier:) (2) | 2022.04.18 |
[iOS] #selector는 무엇이며 왜 필요할까? (0) | 2022.02.07 |
[iOS] 왜 UI는 메인 스레드에서 다룰까? (2) | 2022.01.14 |