[iOS] Constraint - CH, CR

RudinP·2024년 2월 16일
0

Study

목록 보기
161/227
post-thumbnail
  • 1~1000의 우선순위를 가지며, 제약의 우선순위와는 별도의 관계이다.
  • Intrinsic Size를 기반하여 배치할때 영향을 준다.
  • 크기가 고정되어 있는 경우 사용 X, 크기가 고정되지 않은 뷰가 수평이나 수직으로 나란히 배치되어 있을 때만 작용
  • 두 뷰 중 하나만 원래 크기(Intrinsic size)로 표시하고, 나머지 뷰는 크기를 키우거나 줄여 배치하는데 이 때 CH, CR이 사용된다.

Content Hugging Priority(CH)

확장에 대한 저항력(너비를 다 채우지 못할 때)

  • 원래 크기보다 더 커지지 않으려는 저항력(확장에 대한 저항력)
  • 기본 값이 250이다.
  • 만약 두 뷰 모두 CH Priority가 값이 같은 경우 제약 에러가 발생한다.
    • 값이 더 낮은 뷰가 Intrinsic Size보다 커진다.
    • = 값이 높으면 Intrinsic Size 유지
  • 전체 너비를 채우고자 한 뷰를 키울 때 확인

Content Compression Resistance Priority(CR)

축소에 대한 저항력(너비가 부족할 때)

  • 원래 크기보다 더 작아지지 않으려는 저항력(축소에 대한 저항력_
  • 기본 값이 750이다.
  • 만약 두 뷰 모두 CH Priority가 값이 같은 경우 제약 에러가 발생한다.
    • 값이 더 낮은 뷰가 Intrinsic Size보다 작아진다.
    • = 값이 높으면 Intrinsic Size 유지
  • 전체 너비에 맞춰 한 뷰를 줄이고자 할 때 확인

실습

CH

  • Hello Label에는 leading, top, trailing을, Hi Label에는 top, trailing 제약을 준 상태.
  • 이 상태에서는 둘 모두 CH Priority가 같으므로 제약 에러 발생
  • 레이블은 251이 Priority 기본 값인데, 이는 다른 뷰랑 나란히 배치했을 때 레이블이 원래 크기를 유지하도록 하려는 의도 때문.

  • 왼쪽의 레이블을 250으로 CH Priority를 바꿀 경우 저항력이 낮아진 Hello 레이블이 커진다.

CR

  • 마찬가지로 CR Priority가 같으므로 제약 에러가 발생
  • 왼쪽 레이블의 CR Priority를 낮췄으므로, 너비가 축소되었고 오른쪽 레이블이 모두 표시됨.
profile
곰을 좋아합니다. <a href = "https://github.com/RudinP">github</a>

0개의 댓글