[ios] UIStackView의 여러 줄 레이블

줄 바꿈이 Word Wrap으로 설정된 여러 줄 레이블을 스택보기에 넣으면 레이블이 즉시 줄 바꿈을 잃고 레이블 텍스트를 한 줄에 표시합니다.

왜 이런 일이 발생하고 스택 뷰 내에서 여러 줄 레이블을 유지합니까?



답변

정답은 여기에 있습니다 : https :
//.com/a/43110590/566360


  1. 임베드 UILabel돌며 UIView(편집기 -> 삽입에서 ->보기)
  2. 사용 제약이 맞게 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;


답변

레이블의 속성 관리자에서 줄 수를 0으로 설정하십시오. 그것은 당신을 위해 일할 것입니다.

여기에 이미지 설명을 입력하십시오


답변

위의 모든 제안을 시도한 후에 UIStackView에 대한 속성 변경이 필요하지 않다는 것을 알았습니다. UILabels의 속성을 다음과 같이 변경합니다 (레이블은 이미 세로 스택보기에 추가됩니다).

스위프트 4 예제 :

    [titleLabel, subtitleLabel].forEach(){
        $0.numberOfLines = 0
        $0.lineBreakMode = .byWordWrapping
        $0.setContentCompressionResistancePriority(UILayoutPriority.required, for: .vertical)
    }


답변

나를위한 마술은으로 설정하는 것이 widthAnchor었습니다 UIStackView.

설정 leadingAnchor하고 trailingAnchor작동하지 않지만 설정 centerXAnchor하고 widthAnchorUILabel을 올바르게 표시했습니다.