2017-03-17 7 views
0

텍스트를 표시 할 때 UILabel을 사용하고 있습니다. 때로는 텍스트 사본에 고아와 과부 문제가 생기고 텍스트 정렬이 '양쪽 맞춤'으로 설정되며 하이픈 넣기 요소는 1.0으로 설정됩니다.정렬 된 텍스트 정렬을 사용하는 여러 줄 UILabel에서 고아와 과부를 제거하는 방법은 무엇입니까?

고아를 해결하려면 어떻게해야합니까? & 고아 문제가 있습니까?

단어 줄 바꿈 하이픈이있는 텍스트를 정당화하고 고아와 과부를 삭제하려고합니다.

레이블이 지정된 텍스트를 설정했으며 레이블의 크기는 장치 너비에 따라 설정되었습니다.

let paragraphStyle = NSMutableParagraphStyle() 
    paragraphStyle.alignment = NSTextAlignment.Justified 
    paragraphStyle.hyphenationFactor = 1.0; 

let strTwo = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum"; 

let attrlblTwo = NSAttributedString(string: strTwo, 
              attributes: [ 
               NSParagraphStyleAttributeName: paragraphStyle, 
               NSBaselineOffsetAttributeName: NSNumber(float: 0),NSKernAttributeName: 0, NSFontAttributeName : lblTwo.font 
     ]) 
    self.lblTwo.attributedText = attrlblTwo 
+0

이것은 아마도 iOS 11에서 변경되었으므로 요청하지 않아도됩니다. 내 문제는 내가 정당화하지 않기 때문에 나는 고아가 필요하다는 것이다. 그리고 그것은 단지 두 개의 짧은 줄을 가지고 어리석은 것처럼 보인다. (https://stackoverflow.com/questions/46200027/uilabel-wrong-word-wrap-in-ios-11 참조) –

답변

0

혹시이 사용하여 스토리 보드를하고 시도 해 봤나 : 여기

image

이 때문 텍스트의 코드? 저는 전에 스토리 보드에서 UILabel을 사용하고, Text를 Atrributed로 설정하고 하이픈을 1로 설정하는 프로젝트에서 이것을 경험했습니다. 다른 단락 길이와 iOS 기기에서 테스트 했습니까?

+0

예. 이전에 스토리 보드로 이미 시도 했었습니다. 그리고 프로그래밍 방식으로하는 것과 똑같은 일을합니다. –

+0

@ DB_2016이 게시물을 사용해 보셨습니까? http://stackoverflow.com/questions/33228302/how-can-i-prevent-orphans-in-a-label-in-swift – Lysdexia

0

고아를 없애려면 텍스트의 마지막 공간을 줄 바꿈하지 않는 공백으로 바꿉니다. 줄 바꿈하지 않는 공백 문자는 U + 00A0입니다. 편집 메뉴에서 "Emoji & 기호"를 선택하고 오른쪽 상단의 위젯을 클릭하여 문자 뷰어를 전체 크기로 확장 한 다음 검색 필드에 공백을 입력하십시오. 몇 가지 "누락 된"문자가 표시됩니다.이 문자는 공백 문자입니다. "No-Break Space"를 찾을 때까지 코드를 클릭 한 다음 두 번 클릭하여 코드에 삽입하십시오. Character Viewer with Non Breaking Space highlighted