[iOS] - setContentHuggingPriority, setContentCompressionResistancePriority
setContentHuggingPriority(_:for:)
뷰가 고유 크기보다 커지는 것을 방지하는 우선 순위를 설정합니다.
우선순위를 설정하여 어떤 subView의 크기를 조절할 지 결정할 수 있다.
예를 들어
다음과 같이 명언과 명언가를 나타내는 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
뷰가 고유 크기보다 작게 만들어지지 않도록 하는 우선 순위를 설정합니다.
예를 들어 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의 우선순위를 낮게 설정한 경우
다음과 같이 ... 으로 생략하여 보여준다.
Author And Source
이 문제에 관하여([iOS] - setContentHuggingPriority, setContentCompressionResistancePriority), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sun02/사이즈-조절-우선순위-설정저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)