본문 바로가기
iOS

Swift Hugging Priority Resistance Priority 쉽게 생각하자

by 정석 지향 2020. 12. 6.
반응형

안녕하세요. 오늘은 Swift언어로 iOS 개발을 하면서

스토리보드로 오토 레이아웃을 적용할 때 자주 사용하게 되는

Hugging Priority /  Resistance Priority 사용법에 대해 기록을 남기려고 합니다.

제가 이해한 내용을 바탕으로

최대한 쉽게 이해할 수 있도록 간단하게 써보겠습니다.

 

스토리보드 size inspector

위 화면에서 보이는 250 750 숫자들은 우선순위를 의미합니다. 

 

먼저 Hugging Priority에 대해 알아보겠습니다.

먼저 레이블 2개를 만들었습니다.

각 레이블에 마진을 주었습니다. (왼쪽 10, 오른쪽 10, 상단 50)

오류가 납니다. 오류의 내용을 살펴보니 아래와 같았습니다.

대략 살펴보니 수평 우선순위를 조정이 필요하다고 합니다.

왜 오류가 났을까요?

view의 가로길이가 300이라고 가정합니다.

레이블 1의 가로길이는 50

레이블 2의 가로길이는 50

마진을 생각해서 계산해보면 10(왼쪽 마진) + 레이블 1 가로길이 + 10(오른쪽 마진) + 레이블 2 가로길이 + 10(오른쪽 마진) = 130

즉 300 - 130 했을 경우 170이라는 빈 공간이 생깁니다.

Xcode는 이 빈공간을 레이블 1, 레이블 2 둘 중 어느 것으로 채워야 할지 개발자에게 정해달라고 오류를 냈습니다.

이때, 남은 빈 공간을 우선순위가 낮은 레이블이 채우게 됩니다.

우선순위가 낮으면 자신의 가로길이를 유지하지 못한다고 생각하시면 됩니다.

레이블 1의 Horizontal 우선순위를 252로 변경했습니다. 

레이블 1이 레이블 2보다 Horizontal 우선순위가 높기 때문에 (252>251)

레이블 1의 가로길이는 유지가 되었고, 레이블 2가 길게 늘어나 빈 공간을 채우고 있음을 알 수 있습니다.

 

이번에는 레이블 2의 Horizontal 우선순위를 253으로 변경했습니다.

레이블 2가 레이블 1보다Horizontal 우선순위가 높기 때문에 (253>252) 

레이블 2의 가로길이는 유지가 되었고, 레이블 1이 길게 늘어나 빈 공간을 채우고 있음을 알 수 있습니다

요악해보자면 => 공간이 남을 때 우선순위가 낮으면 길이 변동의 주체가 된다

 

이번에는 Resistance Priority에 대해 알아보겠습니다.

아까와 똑같은 조건에서 레이블 1의 텍스트 길이만 늘였습니다.

텍스트 길이를 늘였는데 오류가 났습니다.

오류 내용을 대략 살펴보니 Resistance Priority 우선순위 조정이 필요하다고합니다.

왜 오류가 났을까요?

이유는 레이블 1의 가로길이 + 레이블 2의 가로길이 + 마진을 계산했을 경우 view가로길이보다 크기 때문입니다.

Xcode는 레이블 1, 레이블 2 둘 중 어느 것을 찌그러뜨릴지 개발자에게 정해달라고 오류를 냅니다.

레이블 1의 Horizontal Resistance Priority를 올렸보았습니다.

레이블 1의 우선순위가 레이블 2보다 높음으로 (751>750)

레이블 2가 찌그러지고 그 공간을 레이블 1이 차지함을 알 수 있습니다.

이번에는 레이블 2의 Horizontal Resistance Priority를 올렸보았습니다.

레이블 2의 우선순위가 레이블1보다 높음으로(752>751)

레이블2의 가로길이를 사수하고 레이블 1이 찌그러짐을 알 수 있습니다.

요악해보자면 => 공간이 부족할 때 우선순위가 낮으면 찌그러짐의 주체가 된다

 

오늘 이렇게 Hugging Priority /  Resistance Priority에 대해 간단히 알아보았습니다.

제 개인적인 이해를 바탕으로 작성된 글임으로 더 좋은 글이 많을 거라 생각됩니다.

틀린 부분이나 잘못된 부분은 댓글로 알려주시면 감사하겠습니다.

반응형