상세 컨텐츠

본문 제목

[오토레이아웃] Constraint Priorities

autoLayout

by 옹홍 2021. 7. 4. 23:42

본문

Constraint Inequalities (부등식 성립)

오토레이아웃에서 항상 방정식처럼 제약조건이 성립하는 것은 아니다. 부등식도 우리는 오토레이아웃에서 사용할 수 있다. 애플다큐먼트를 보면

이렇게 부등식이 성립하는 경우가 있다. 여기서 보면 결국은 40 <= View.width <= 280 이라는 것을 알수 있다. 즉 View의 너비는 40과 280 사이의 어떠한 값을 의미한다. 즉, 우리가 이 뷰의 너비의 최대값과 최소값을 정해주는 것이다. 하지만 이러한 부등식이 있는 제약조건을 어떻게 사용해야할까? 이것의 연장선 상에는 Constraint Priorities가 있다.

 

Constraint Priorities(제약조건 우선순위)

Constraint를 한 뷰에다가 계속 추가하게 되면 변경되는 것이 아니라, 계속 제약이 추가된다. 이렇게 되는 이유는 우리는 제약조건에 대한 우선순위를 설정할수 있게 되기 때문이다. 이렇게 설정된 우선순위는 높은 순서가 먼저 뷰에 적용된다.

우선순위 = 뷰에 가해지는 힘

결국 우선순위가 높은 제약조건이 우선순위가 낮은 어떤 제약조건과 상반된다면, 낮은 제약 조건은 무시될 것이라는 소리이다.

예를들어 설명하자면 위와 같다

이 둘은 서로 상반되는 Constraint라고 볼수 있다. 하나는 30이고 하나는 100만큼 떨어지라고 하고 있다. 하지만 Priority가 30은 250이고 100은 1000이기에 결국 앞의 Constraint는 무시된다.

반면에 둘다 priority가 1000이라면 충돌을 하게 될 것이다. 

 

Constraint Priorities 언제사용하나?

이런식으로 부등식을 사용해서 먼저 조건을 만족시킬때, 그다음 Constraint를 적용시킬수 있을 것이다. 하지만 여기서 Equal 30을 없앤다면 또 오류가 날 것이다. 왜나면 100보다 작은 어떤 Constant 값인데, 그게 몇인지 모르겟다는 것이다!!! Priority는 뒤에 더 많이 사용될 예정이다! 

관련글 더보기

댓글 영역