## TIL (Today I Learned) 6월 30일 (금) ### translatesAutoResizingMaskIntoConstraints - UIView의 인스턴스 프로퍼티 ![](https://hackmd.io/_uploads/ryXo-uRd3.png) 뷰의 autoresizing mask가 Auto Layout constraints로 변환되는지 여부를 결정하는 부울 값 > **autoresizing mask** > UIView의 인스턴스 프로퍼티 > 정의: Superview의 bounds가 변경될 때, receiver의 size를 조정하는 방법을 결정하는 정수 비트 마스크 - Discussion 값이 true이면 autoresizing mask로 **지정된 행동(behavior)을 복제하는 Constraint 집합을 만듦** 또한 View의 frame, bounds 또는 center 프로퍼티를 사용하여 View의 크기와 위치를 수정하여 auto layout에서 정적인 프레임 기반 레이아웃을 만들 수 있음. autoresizing mask constraint는 View의 크기와 위치를 완전히 지정함. 따라서 충돌을 일으키지 않고, 이 크기 또는 위치를 수정하기 위해 **추가 constraint를 추가할 수 없음**. auto layout을 사용하여 View의 크기와 위치를 동적으로 계산하려면, 이 프로퍼티를 false로 설정한 다음, View에 모호(ambiguous)하지 않고 충돌하지 않는(nonconflicting) constraint 집합을 제공해야 함. 기본적으로 프로그래밍 방식으로 만드는 모든 View에 대해 이 프로퍼티는 true로 설정됨 Interface Builder(=스토리보드)에서 View를 추가하면, 시스템은 이 프로퍼티를 false로 자동 설정함 참고: [iOS ) translatesAutoresizingMaskIntoConstraints](https://zeddios.tistory.com/474) ### BackButton 설정 navigationController를 활용하여 화면 1에서 화면 2를 push한다고 가정. 화면 2의 backBarButtonItem에 원하는 title이 보이도록 설정하고 싶을 때 1. **화면 1**의 View Controller 파일을 연다. 2. UIBarButtonItem 타입의 프로퍼티를 만들어준다. ``` swift let backBarButtonItem = UIBarButtonItem(title: "한국의 출품작", style: .plain, target: self, action: nil) ``` 3. 해당 프로퍼티를 navigationItem의 backBarButtonItem으로 설정해준다. ``` swift navigationItem.backBarButtonItem = backBarButtonItem ``` ### NavigationBarHidden NavigationBar를 숨기고 싶을 때 ``` swift navigationController?.setNavigationBarHidden(true, animated: false) ``` ## 트러블슈팅 ### CustomCell에 Label을 2개 넣어주었을 때 priority ambiguity 발생 ![](https://hackmd.io/_uploads/SJGcPtC_2.png =200x) - 문제상황 imageView 1개와 Label 1개를 가지고 있는 CustomCell의 stackView에 Label을 하나 더 추가해보았다. 이 때 priority ambiguity 경고가 떴다. - 오류발생원인 StackView의 Alignment는 Fill로 설정되어있기때문에 StackView 내 컴포넌트들로 가로를 채워야한다. 하지만 두 Label의 hugging priority가 같기때문에 어떤 Label이 얼마만큼의 공간을 차지할 것인지 알 수없어 오류가 발생한 것이었다. - 해결방법 오른쪽에 위치한 Label에 hugging priority를 낮춤으로써 오류를 해결하였다. - 추가실험 - 실험 1 왼쪽 Label: hugging 251, resistance 750 오른쪽 Label: hugging 250, resistance 750 ![](https://hackmd.io/_uploads/BJyKiq0u2.png =200x) -> 두 Label의 resistance는 동일하나, 왼쪽 Label의 hugging priority가 오른쪽 Label보다 더 높기때문에 오른쪽 Label의 글씨가 짤린다. - 실험 2 왼쪽 Label: hugging 251, resistance 750 오른쪽 Label: hugging 250, resistance 751 ![](https://hackmd.io/_uploads/BJJjJjAu2.png =200x) -> 오른쪽 Label의 resistance priority가 더 높기때문에 왼쪽 Label의 글씨가 짤린다. > **CHCR (Content hugging, Content Resistance)** > - Content Hugging: 늘어나지 않게 버티는 힘 = priority가 높을 수록 본인의 사이즈를 지킴 > - Content Compression Resistance: 외부에서 압력이 들어왔을 때 버티는 힘 = priority가 높을 수록 본인의 컨텐츠를 지킴