According to Apple...
A Boolean value that determines whether the view’s autoresizing mask is translated into Auto Layout constraints.
translatesAutoresizingMaskIntoConstraints | Apple Developer Document
An integer bit mask that determines how the receiver resizes itself when its superview’s bounds change.
UIViewAutoresizing 구조체의 인스턴스가 바로 autoresizing mask이다.
이 autoresizing mask의 기능은 스토리 보드에서 흔히 볼 수 있습니다.
특정한 UIView를 스토리 보드에 추가한 뒤 constraint를 설정하지 않고 위 autoresizing을 설정 해 주면 constraint가 없음에도 불구하고 핸드폰 디바이스 크기에 따라서 자동으로 view의 사이즈가 늘어나고 줄어들수 있게 됩니다.
translatesAutoresizingMaskIntoConstraints 값이 기본적으로 true로 설정이 됩니다.
해당 값이 true 일 경우 "시스템은 view의 autoresizing mask로 지정된 행동을 복제하는 constraint 집합을 만듭니다"
이것은 autoresizing mask constraint가 view의 크기와 위치를 완전히 컨트롤하게 되기 때문에 해당 view의 크기와 위치를 수정하기 위한 추가 constraint를 줄 수 없습니다.
그래서 추가로 layout constraint를 주고 싶으면 해당 프로퍼티를 false로 설정해야 하는 것 입니다.
기본적으로 프로그래밍 방식에서 만드는 모든 View에는 해당 프로퍼티가 true로 설정된다고 합니다. 다만 인터페이스 빌더 즉 스토리보드에서 view를 추가하면 시스템은 해당 뷰에 대해서는 이 프로퍼티를 false로 자동 설정한다고 해요.
그렇기 때문에 스토리보드로 UI의 constraint를 줄 때는 문제 없이 autolayout설정이 되는 것을 확인 할 수 있지만 만약 우리의 코딩이 첨가 된다면 아래와 같은 문제를 자주 맞닥드릴 수 있는 것이죠
Will attempt to recover by breaking constraint <NSLayoutConstraint 0x6000002890....
이 경고는 즉 프로그래머가 코드로 세팅한 constraint값과 시스템에서의 autoresizing mask constraint와 충돌을 한다는 뜻이고 시스템은 이런 혼란스러원 상황에서 프로그래머가 준 제약조건을 깨버리고 복구를 시도한다는 메세지입니다.
이를 해결하기 위해서는
self.collectionView.translatesAutoresizingMaskIntoConstraints = false
를 통해서 나만의 커스텀 constraint를 사용할 수 있게하는 설정이 필요한 것입니다.
물론 제약조건을 완벽하게 주지 않으면 화면에서 보이지 않기 때문에
NSLayoutAnchor또는NSLayoutConstraint를 활용하여 화면에 보일 정도로 제약조건을 주면
비로소 화면에 제대로 view가 구현되는 것을 볼 수 있습니다!~~🤩
Zedd님의 블로그를 많이 참고하여 작성한 글입니다.
해당 정보에 대해 궁금하시면 아래 Zedd님 블로그를 확인 해 보시면 더 빠삭한 정보 얻으실 수 있습니다!! 👏👏👏
[출처]: https://zeddios.tistory.com/474 [ZeddiOS]
어플리케이션 기능을 개발하기 위해 외부 라이브러리를 사용할 때, 프로젝트와 해당 라이브러리의 상관관계를 용이하게 관리해주는 도구
애플에서 제공하는 어플리케이션 개발환경이며