iOS/UIKit
preferredMaxLayoutWidth
Hamp
2025. 8. 26. 21:19
반응형
🏁 학습할 내용
- 정의
- 예시 코드
📌 정의
다중 라인에서 줄바꿈이 일어나는 최대 너비

- 평소에는 건드릴일 많이 없음, 특히 numberOfLine = 1일때는 쓸일 없음
- 보통은, layout 너비를 따라감
- intrinsicContentSize 계산에도 큰 영향을 끼침
- 줄바꿈 너비가 변경되면, 높이자체가 바뀌니깐
🤖 예제 코드



스택뷰에 2개의 Label을 넣고, 값을 줬을 떄는, stackView너비를 꽉채우게 늘어났는데
두번째 Label의 preferredMaxLayoutWidth 값을 130으로 주니깐, 130을 기준으로 줄바꿈이 들어가는걸 확인할 수 있다.
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white
let label1 = makeLabel(text: "preferredMaxLayoutWidth를 지정하지 않은 UILabel입니다. WWWWWWWWWWWWWWWWWWWW")
label1.backgroundColor = .yellow
let label2 = makeLabel(text: "preferredMaxLayoutWidth를 지정하지 않은 UILabel입니다. WWWWWWWWWWWWWWWWWWWW")
label2.backgroundColor = .green
// preferredMaxLayoutWidth 지정 (200pt로 제한)
// label1.preferredMaxLayoutWidth = 100
// label2.preferredMaxLayoutWidth = 130
let stackView = UIStackView(arrangedSubviews: [label1, label2])
stackView.axis = .vertical
stackView.spacing = 40
stackView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(stackView)
NSLayoutConstraint.activate([
stackView.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 40),
stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 10),
stackView.trailingAnchor.constraint(lessThanOrEqualTo: view.trailingAnchor, constant: -10),
])
}
private func makeLabel(text: String) -> UILabel {
let label = UILabel()
label.numberOfLines = 0 // 여러 줄 허용
label.text = text
label.translatesAutoresizingMaskIntoConstraints = false
return label
}
}
출처
https://developer.apple.com/documentation/uikit/uilabel/preferredmaxlayoutwidth
preferredMaxLayoutWidth | Apple Developer Documentation
The preferred maximum width, in points, for a multiline label.
developer.apple.com
반응형