본문 바로가기
Swift/TOPIC

Swift | translatesAutoresizingMaskIntoConstraints는 왜 끄는걸까?

by UDDT 2025. 7. 20.

 

   우리가 처음 제약 설정을 할 때,

  translatesAutoresizingMaskIntoConstraints = false라는 코드를 작성했었습니다

 

   이거 사실 이름도 길어서 잘 읽어보지도 않고

  그냥 습관처럼 transla만 치고 자동완성 제안이 뜨면 엔터를 쳐서 설정을 하곤 했습니다

 

 

 

   그런데 이 프로퍼티는 왜 false 처리하는걸까요?

 스토리보드로 제약을 설정할 때와 SnapKit으로 할때는

 따로 false처리를 해준 적은 없는데 어떻게 된걸까요?

 

   생각해보면 스토리보드에서

  translatesAutoresizingMaskIntoConstraints에 체크하는 항목을 본적이 없습니다

  비슷한 내용을 추가적으로 코드로 작성해준 적도 없죠

 

   사실 체크항목도 없을 뿐더러 있다고해도 체크할 필요가 없습니다

  시스템이 알아서 translatesAutoresizingMaskIntoConstraints = false 처리하고 있으니까요

 

     스토리보드 우클릭을 하고, Open As > Source Code를 하면

    이 설정이 XML로 포함되어 있는 것을 확인해볼 수 있습니다

 

     제약 설정을 할 때 사용하는 SnapKit의 경우에는 어떨까요?

    SnapKit에서도 같은 코드를 작성한 적이 없습니다

    다만, 내부 코드를 확인해보면 SnapKit도 동일하게 false처리 해주고 있음을 볼 수 있습니다

 

     그렇다면 이 translatesAutoresizingMaskIntoConstraints가 뭐길래

   이렇게 못꺼서 안달일까요?

 translatesAutoresizingMaskIntoConstraints

 

       공식문서의 설명을 보면

     View의 자동 조정 마스크(autoresizing mask)를

     Auto Layout 제약으로 바꿀지 말지에 대한 Boolean 값이라고 합니다

     

       Discussion에 보면,

     만약 Auto Layout을 동적으로 계산해서 사용하고 싶으면 이 프로퍼티를 반드시 false처리하라고 합니다

     결론적으로는 Auto Layout을 쓸거면 이 프로퍼티는 false 처리하는 것으로 이해하면 되겠네요

 

      Auto Layout 제약은 알겠는데, View의 자동 조정 마스크는 뭘까요?

 Autoresizing Mask

     사실 이 AutoresizingMask는 스토리보드 시절에 스치듯이 본적이 있습니다

 

      Autoresizing Mask는 약간 구형 기능 느낌(?)입니다

    SuperView의 크기에 따라 SubView의 위치나 크기를 알아서 조정하는 방식의 Layout입니다.

    다만 세부조정이 어렵기 때문에 최근에는 사용하지 않는 기능입니다

 

     예전에는 iPhone의 화면 크기가 지금처럼 다양하지 않았기 때문에

    마스크 값을 통해 크기를 약간씩 조정해도 충분히 대응할 수 있었지만,

    지금은 기기 해상도와 화면 비율이 다각화되면서

    약간씩 조정하는거로는 커버가 불가능한 상황이 되었습니다

 

     따라서 이 autoresizing Mask는 이제는 잘 사용하지 않게 되었습니다

 

 결론

    translateAutoresizingMaskIntoConstraints가 true면,

    시스템이 알아서 Autoresizing을 해주고 해당 값을 autoLayout Constraints로 변환하여

    새로 설정하는 autoLayout Constraints와 충돌하기 때문에

    autoLayout을 설정할 때는 translateAutoresizingMaskIntoConstraints = false처리를 해준다

   

 reference

    Base: SeSAC 내부 비공개 강의 자료

 

https://developer.apple.com/documentation/uikit/uiview/translatesautoresizingmaskintoconstraints

 

translatesAutoresizingMaskIntoConstraints | Apple Developer Documentation

A Boolean value that determines whether the view’s autoresizing mask is translated into Auto Layout constraints.

developer.apple.com

https://developer.apple.com/documentation/uikit/uiview/autoresizingmask-swift.property

 

autoresizingMask | Apple Developer Documentation

An integer bit mask that determines how the receiver resizes itself when its superview’s bounds change.

developer.apple.com

 

최근댓글

최근글

skin by © 2024 ttuttak