Programming/iOS

AutoLayout] 우선순위 설정 1

고양이의시간 2020. 3. 12. 16:24

iOS 프로젝트를 시작하면서, 헷갈렸던 우선순위에 대한 내용을 다시 살펴보고 정리해 보았다.

UI 마스터가 되기위해 우선순위도 마스터 해보자 😎

기본적으로, 우선순위 값이 높을 수록, 그 제약조건은 우선적용 된다. (Max 1000)

 

 

 

Content Hugging Priority

오브젝트가 가지고 있는 컨텐츠 크기값을 그대로 유지할 수 있을지에 대한 우선순위 

 

 

A, B Label 모두 251 로 우선순위가 같다.

Label 두개를 선택해, top, leading, trailing 값을 20 으로 동일하게 주면, 위와 같은 에러를 확인 할 수 있다.

에러 메시지를 보면, 둘 모두 우선순위가 같으니 어느 한쪽에 hugging priority 값을 251 보다 높은 252 로 높여 달라고 한다.

 

 

 

 

Label A 에 Hugging priority 값을 252 로 변경해 주니,  에러 메시지는 사라지고

"Label_A" 내용크기만큼 사이즈가 fit 된것을 볼 수 있다.

그리고,  우선순위가 낮은 Label_B 는 컨텐츠 크기보다 늘어나게 된다.

 

 

 

 

 

 

 

Content Compression Resistance Priority

근처의 다른 오브젝트때문에  내 크기가 찌그러질때, 내 크기를 유지하기 위한 우선순위

이 우선순위에서 중요한 점은, 나를 찌그러지게 할만한 오브젝트가 주변에 있을때 설정하는 값이라는 것이다.

 

TitleLabel 이 다른 Label 을 덮어버린다

마찬가지로, label 2개를 만들고, top, leading, trailing 값을 20 으로 동일하게 주었다.

그리고 TitleLabel 은 내용을 길게 써넣으면, 위와 같은 에러를 볼 수 있다.

둘 모두 compression resistance priority 가 같으니 어느 한쪽을 높여 달라고 한다.

 

 

 

 

TitleLabel 에 우선순위를 1 높여주면,  따단-! 다른 Label 이 아예 사라져 버린다.

trailing 제약 조건 우선순위가 1000 이므로, 우선 만족 시키고 

그다음 제약 조건 우선순위인 compression resistance 751 을 만족 시킨다.

그래서 옆에 위치한 Label은 아예 사라져 버린 것...

 

 

 

 

Title Label 은 750, Label 은 751 로 설정하면, 위와 같은 화면을 볼 수 있다.

List 화면 UI 구성시, 이 속성을 많이 사용하게 된다. 

날짜 Label 과 타이틀 Label 중 더 중요한 정보는 날짜 Label 이므로, 우선순위를 높여 찌그러지지 않게 한다.

 

 

 

tableView에 적용한 모습