Priority

2024. 12. 15. 18:52·iOS/UIKit
반응형

👋 들어가기 전

우리는 지난 포스팅에서 intrinsicContentSize에 대해서 알아봤다. 

이번에는 intrinsicContentSize에 대한 우선순위를 지정할 수 있는 방법을 알아보자.


✊ 왜 필요할까??

먼저 다음 코드를 보자.

label1.text = "첫번 째 레이블입니다."
label2.text = "두번 째 레이블입니다."

label1.backgroundColor = .green
label2.backgroundColor = .red

view.addSubview(label1)
view.addSubview(label2)

NSLayoutConstraint.activate([
    label1.leadingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.leadingAnchor),
    label1.topAnchor.constraint(equalTo: view.topAnchor, constant: 40),

    label2.trailingAnchor.constraint(equalTo: view.safeAreaLayoutGuide.trailingAnchor),
    label2.topAnchor.constraint(equalTo: view.topAnchor, constant: 40)

])

 

UILabel은  intrinsicContentSize이 있기때문에 top과 leading 또는 trailing만 지정해도 문제가 크게 없다.

 

결과를 살펴보자.

 

흠.. 크게 문제가 없어 보인다.. ? 첫번째 레이블의 trailing 제약조건을두번째 레이블의 leading에
붙혀보면 어떨까?

 

 

두번 째 레이블이 멋대로 늘어나는 현상이 벌어진다???

두번 째 레이블의  가 깨져버렸다는 뜻이다.

 

 

전혀 예상하지 못한 동작이다.

개발자가 예상하지 못한 상황은 절대 환영할 만한 상황이 아니다.

 

그러면 결국 우리는 저런 상황에서 우리가 예상할 수 있게 건드려줘야하는데

 

바로 그게 이번 시간 학습할 priority다.


☝️ Content Hugging Priority

 

Hugging Priority는 둘 중하나는 커져야한다면 intrinsicContentSize를 누가 포기할 것인가??

 

즉, 우선순위가 높으면 intrinsicContentSize를 유지 낮은 놈이 늘어난다는 뜻

 

그러면 위에서 따로 우선순위를 정하지 않았는데 오른쪽이 늘어났을까??

 

우선 순위가 같을경우에 수평에서는 왼쪽이 우선 , 수직에서는 위가 우선적으로 intrinsicContentSize를
유지하려는 경향이 있다.

label2.setContentHuggingPriority(.defaultHigh, for: .horizontal)

 

다음과 같이 label2의 수평 우선순위를 높히니깐 왼쪽에 있는 label1이 늘어나는 것을 볼 수 있다.


✌️ Content Compression Resistance Priority

 

Sets the priority with which a view resists being made smaller than its intrinsic size.

 

Compression Resistance Priority는 Hugging과 정 반대다.

 

둘 중하나는 작아져야한다면 intrinsicContentSize를 누가 포기할 것인가??

 

즉, 우선순위가 높으면 intrinsicContentSize를 유지 낮은 놈이 작아진다는 뜻

 

다음 코드를 적용해보자.

   label2.setContentCompressionResistancePriority(.defaultHigh, for: .horizontal)

label2을 크기를 유지하게 설정하니깐 왼쪽 레이블이 작아지며 내용이 짤린다.


😀 소감 및 마무리

언젠가 꼭 정리해야 됐는데 이번 시간에 빠르게 적용해보니깐 생각보다 별거 아니네 ㅋㅋ

 

  Hugging Compression Resistance
낮아지면 커진다. 작아진다.
높히면 intrinsicContentSize를 유지하려한다.

출처

 

반응형

'iOS > UIKit' 카테고리의 다른 글

UIStackView 뿌시기  (0) 2025.01.29
PhotoPicker 최적화하기  (4) 2024.12.29
IntrinsicContentSize  (1) 2024.12.15
Auto Layout이란  (0) 2024.12.15
특정 시기에 아이콘 자동 변경하기  (0) 2024.10.26
'iOS/UIKit' 카테고리의 다른 글
  • UIStackView 뿌시기
  • PhotoPicker 최적화하기
  • IntrinsicContentSize
  • Auto Layout이란
Hamp
Hamp
남들에게 보여주기 부끄러운 잡다한 글을 적어 나가는 자칭 기술 블로그입니다.
  • Hamp
    Hamp의 분리수거함
    Hamp
  • 전체
    오늘
    어제
    • 분류 전체보기 (309) N
      • CS (30)
        • 객체지향 (2)
        • Network (7)
        • OS (6)
        • 자료구조 (1)
        • LiveStreaming (3)
        • 이미지 (1)
        • 잡다한 질문 정리 (0)
        • Hardware (2)
        • 이론 (6)
        • 컴퓨터 그래픽스 (0)
      • Firebase (3)
      • Programing Langauge (38)
        • swift (32)
        • python (5)
        • Kotlin (1)
      • iOS (132)
        • UIKit (37)
        • Combine (1)
        • SwiftUI (32)
        • Framework (7)
        • Swift Concurrency (22)
        • Tuist (6)
        • Setting (11)
        • Modularization (1)
        • Instruments (6)
      • PS (59)
        • 프로그래머스 (24)
        • 백준 (13)
        • LeetCode (19)
        • 알고리즘 (3)
      • Git (18)
        • 명령어 (4)
        • 이론 (2)
        • hooks (1)
        • config (2)
        • action (7)
      • Shell Script (2)
      • Linux (6)
        • 명령어 (5)
      • Spring (15) N
        • 어노테이션 (3) N
        • 튜토리얼 (11)
      • CI-CD (4)
      • Android (0)
        • Jetpack Compose (0)
      • AI (2) N
        • 이론 (2) N
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Spring
    protocol
    GIT
    IOS
    boostcamp
    UIKit
    concurrency
    property
    dispatch
    dp
    프로그래머스
    CS
    투포인터
    AVFoundation
    lifecycle
    SwiftUI
    dfs
    백준
    Swift
    Tuist
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
Hamp
Priority
상단으로

티스토리툴바