[IOS] Hugging priority, Compression Resistance priority

2022. 11. 25. 17:41IOS

 

 

AutoLayout으로 UI를 구성하고 디자인 할때 Hugging priority, Compression Resistance priority 가 계속 등장한다. 그만큼 중요하고 또 기본이 되는 개념이라고 생각한다. 

 

 

AutoLayout에서 크기가 결정되는 뷰들은 다른 뷰들과의 제약에 의해 본래의 사이즈보다 줄어들거나 늘어날 수 있다. 그에 맞춰서 뷰들의 Hugging priority, Compression Resistance priority 에 적절한 값을 넣어 어떤 뷰의 사이즈를 유지시킬 지 결정할 수 있다. 두 개의 개념은 priority라는 값이 클수록 유지된다는 점에서는 비슷하지만 늘어나는 것과 줄어드는 것을 조절한다는 점에서 차이점이 있다.

 

 

Hugging priority 

우선순의가 높으면 크기를 유지하고 낮으면 크기가 늘어난다. 크기가 커지는 것과 관련된  상황이라면 Hugging priority 를 활용한다.

 

예를 들어 두 개의 오브젝트 사이의 제약조건이 둘다 20일 때 그 거리가 50이라면 둘 중 하나는 크기가 커져야한다. 이때 하나의 오브젝트 Hugging priority를 높이게 되면 다른 오브젝트가 커지게 된다. 

 

 

 

Compression Resistance priority 

우선순위가 높으면 크기를 유지하고 우선순위 낮으면 크기 작아진다. 크기가 작아지는 것과 관련된 상황이라면 Compression Resistance priority 활용한다.

 

예를 들어 두개의 Label이 있을 때 하나의 label에 긴 text가 들어가 사이즈가 갑자기 커진다면, 다른 label의 Compression Resistance priority를 증가시켜 해당 label의 크기를 유지시킬 수 있다.