iOS/UIKit

[UIKit] translatesAutoresizingMaskIntoConstraints

최지철 2023. 10. 18. 14:07
728x90
반응형

왜 오토 레이아웃을 사용할 때는
translatesAutoresizingMaskIntoConstraints = false를 할까?

 

textField.translatesAutoresizingMaskIntoConstraints = false

오토레이아웃을 잡을때, 기계적으로 해당코드를 작성하곤 했다. 그러다가 문득.. 왜 이걸 쓰는걸까? 난 왜 이걸 예제를 따라 당연하다는듯이 적었을까를 생각했다..

AutoresizingMask란, superview의 영역이 바뀔 때 하위 뷰의 크기를 어떻게 조정할지에 대한 정보를 가지고 있는 정수형 비트마스크라 한다.
해당
개념은 여러 속성을 부여하여 슈퍼뷰의 크기 변화에 따라 서브 뷰의 width, height 혹은 leading, top, trailing, bottom 영역을 유연하게 고정하거나 확장할 수 있다.

 

그렇다면, 왜 false로 바꾸어야할까..?

 

 Autoresizing과 AutoLayout을 동시에 사용하고자 할 경우 주의해야한다. View의 AutoresizingMask도 결국 Auto Layout의 constraints로 변환되면서 기존의 constraints와 레이아웃 충돌이 일어날 수 있기 때문이다. 고로 우리는 AutoLayout을 사용하고자 할 때 translatesAutoresizingMaskIntoConstraints라는 옵션을 false로 설정해 AutoresizingMask를 사용한 Constraints 변환을 막는 것이다.

 

참고로 스토리보드에서는 오토 레이아웃이 적용된 View의 translatesAutoresizingMaskIntoConstraints를 자동으로 false 설정해준다. 그래서 코드로 오토 레이아웃을 조정할때만 해당 옵션을 설정해주었던 것이다.

 

 

728x90
반응형