[iOS] - setContentHuggingPriority, setContentCompressionResistancePriority

sun02·2021년 12월 14일
0

setContentHuggingPriority(_:for:)

뷰가 고유 크기보다 커지는 것을 방지하는 우선 순위를 설정합니다.

우선순위를 설정하여 어떤 subView의 크기를 조절할 지 결정할 수 있다.

더 자세히 - Apple document

예를 들어

다음과 같이 명언과 명언가를 나타내는 quoteLabel과 nameLabel이 있을 때

뷰 내에서 quoteLabel의 높이가 조정되어 제약을 만족시키고자 할 때 setContentHuggingPriority() 메서드를 사용한다.

override func viewDidLoad() {
    super.viewDidLoad()
    
    colorView.addSubview(quoteLabel)
    colorView.addSubview(nameLabel)
    
    //quoteLabel과 nameLabel constraints 생략하였습니다.
    
    self.quoteLabel.setContentHuggingPriority(.defaultLow, for: .vertical)
    self.nameLabel.setContentHuggingPriority(.defaultHigh, for: .vertical)


    
}
  • 높이가 고정될 nameLabel의 우선순위를 .defaultHight, 높이가 조정될 quoteLabel의 우선순위를 .defaultLow로 설정해준다
    • 우선순위가 상대적으로 높거나 낮기만 하면 되기 때문에 정확한 수치는 중요하지 않다.

그러나 만약 우선순위를 수치로 지정하고 싶다면

self.quoteLabel.setContentHuggingPriority(UILayoutPriority(750), for: .vertical)
self.nameLabel.setContentHuggingPriority(UILayoutPriority(751), for: .vertical)
  • 다음과 같이 나타낼 수 있다.

setContentCompressionResistancePriority

뷰가 고유 크기보다 작게 만들어지지 않도록 하는 우선 순위를 설정합니다.

더 자세히 - Apple document

예를 들어 quoteLabel의 text가 매우 많아졌을 때

self.quoteLabel.setContentCompressionResistancePriority(.defaultHigh, for: .vertical)
self.nameLabel.setContentCompressionResistancePriority(.defaultLow, for: .vertical)
        
  • quoteLabel의 우선순위을 높게 설정하면

다음과 같이 그 text를 최대한 다 보여주려고 하지만

self.quoteLabel.setContentCompressionResistancePriority(.defaultLow, for: .vertical)
self.nameLabel.setContentCompressionResistancePriority(.defaultHigh, for: .vertical)
        
  • quoteLabel의 우선순위를 낮게 설정한 경우

다음과 같이 ... 으로 생략하여 보여준다.

0개의 댓글