줄 바꿈이 Word Wrap으로 설정된 여러 줄 레이블을 스택보기에 넣으면 레이블이 즉시 줄 바꿈을 잃고 레이블 텍스트를 한 줄에 표시합니다.
왜 이런 일이 발생하고 스택 뷰 내에서 여러 줄 레이블을 유지합니까?
답변
정답은 여기에 있습니다 : https :
//.com/a/43110590/566360
- 임베드
UILabel
돌며UIView
(편집기 -> 삽입에서 ->보기) - 사용 제약이 맞게
UILabel
받는 사람을UIView
(예를 들어, 수퍼 제약 공간, 위쪽 공간, 선행 공백을 후행)
이 UIStackView
(가) 스트레칭합니다 UIView
제대로 맞게, 그리고는 UIView
를 제한합니다 UILabel
여러 줄에.
답변
보기 UILabel
중 하나 인 가로 스택보기의 경우 인터페이스 빌더에서 먼저 설정하십시오 label.numberOfLines = 0
. 이렇게하면 레이블에 둘 이상의 줄이 있어야합니다. 스택 뷰가있을 때 처음에는 작동하지 않았습니다 stackView.alignment = .fill
. 작동하려면 간단히 설정하십시오 stackView.alignment = .center
. 이제 레이블을에서 여러 줄로 확장 할 수 있습니다 UIStackView
.
애플 설명서를 말한다
채우기 정렬을 제외한 모든 정렬의 경우 스택보기는 스택의 축에 수직 인 크기를 계산할 때 각 정렬 된보기의 고유 ContentSize 속성을 사용합니다.
여기를 제외한 단어를 참고 하십시오. 시 .fill
수평을 사용 UIStackView
자체를 조정되지 않는 수직 파단 배치 크기를 사용.
답변
- 먼저 레이블 수를 0으로 설정하십시오.
multiLine
고정 너비 를 지정 하지 않으면 스택 뷰가 계속 커지지 않습니다 . 너비를 고정하면 그림과 같이 너비에 도달하면 여러 줄로 나뉩니다.
스택 뷰에 고정 너비를 제공하지 않으면 상황이 모호해집니다. 라벨과 함께 스택 뷰가 얼마나 오래 커 집니까 (레이블 값이 동적 인 경우)?
이것이 문제를 해결할 수 있기를 바랍니다.
답변
preferredMaxLayoutWidth를 UILabel로 설정하면 나를 위해 일했습니다.
self.myLabel.preferredMaxLayoutWidth = self.bounds.size.width;
답변
답변
위의 모든 제안을 시도한 후에 UIStackView에 대한 속성 변경이 필요하지 않다는 것을 알았습니다. UILabels의 속성을 다음과 같이 변경합니다 (레이블은 이미 세로 스택보기에 추가됩니다).
스위프트 4 예제 :
[titleLabel, subtitleLabel].forEach(){
$0.numberOfLines = 0
$0.lineBreakMode = .byWordWrapping
$0.setContentCompressionResistancePriority(UILayoutPriority.required, for: .vertical)
}
답변
나를위한 마술은으로 설정하는 것이 widthAnchor
었습니다 UIStackView
.
설정 leadingAnchor
하고 trailingAnchor
작동하지 않지만 설정 centerXAnchor
하고 widthAnchor
UILabel을 올바르게 표시했습니다.
