iOS/AutoLayout

Hugging Priority

소재훈 2022. 1. 17. 18:43

Priority설명을 하기 전에, Label의 경우 크기가 정해져 있지 않기 때문에 크기를 지정해 주지 않아도 contraint 에러가 발생하지 않는 다는 것을 알아두자. 

trailing contraint가 빠져있기 때문에 이후에 다른 뷰와 겹칠 수 있어 발생하는 경고이다.  trailing을 40으로 설정해주었더니 에러가 발생한다.

오브젝트의 size inspector에서 priority를 설정할 수 있다.

내가 가지고 있는 컨텐츠 값 그대로 유지를 할 수 있는 우선순위를 Hugging Priority라고 한다. 숫자가 높을수록 우선순위가 높아 우선 수행된다. 우선순위 값은 1~1000사이이다. 

1000이라는 값은 어떤 설정에서도 그 속성은 풀리지 않음을 의미한다. 무조건 그 값을 유지한다는 의미이다.

contraint의 edit을 눌러도 priority값을 수정할 수 있다.

우선순위값이 같을 때는 아까와 같이 에러가 발생한다. 두 오브젝트가 같은 우선순위를 가지고 있기 때문에 trailing을 40을 주었을 때, 어떤 Label 오브젝트가 커질 지 결정할수 없는 것이다. 

 

왼쪽에 있는 레이블의 크기가 변하면 안된다면, 왼쪽의 레이블의 우선순위를 높게 해주면, 왼쪽 레이블의 크기는 그대로 이고, 오른쪽 레이블의 크기가 늘어난 것을 볼 수 있다.

레이블을 세개 만들어서, 가운데 레이블만 우선순위를 낮춘 모습은 다음과 같다.

Label을 삼분할 해서 사용하고 싶을 때 위와같은 상태에서 가운데 Label만 가운데정렬해서 사용하기도 한다.