2016-11-16 1 views
0

x 줄만큼 첫 줄을 들여 쓴 여러 줄 레이블이 필요합니다.왜 UILabel의 첫 줄 들여 쓰기가 사용자 정의 글꼴로 잘 작동하지 않습니까?

이 경우 나는 NSAttributedString 및 해당 속성 firstLineHeadIndent을 사용했습니다.

텍스트가 한 줄보다 약간 긴 경우를 제외하고 대부분의 경우에 적용됩니다. 나는 그 경우 들여 쓰기를 무시한다는 것을 알아 냈습니다. 라벨의 끝 부분은 정확한 양만큼 들여 쓰기되어 있습니다.

let text = "Hello World! Hello World! Hee" 
let attString = NSMutableAttributedString(string: text) 
let paragraphStyle = NSMutableParagraphStyle() 
paragraphStyle.firstLineHeadIndent = 40 
attString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attString.length)) 
attString.addAttribute(NSFontAttributeName, value: label.font, range: NSMakeRange(0, attString.length)) 
label.attributedText = attString 

라벨을 이미 깨뜨린 경우입니다. enter image description here

는 여기에 내가 조금 더 텍스트를 만드는 경우 그리고 그것은 잘 작동 : enter image description here

나는 시스템 글꼴을 사용하는 경우, 그것은 모두가 잘 작동하는지주의해야한다. 맞춤 글꼴의 경우에만 해당됩니다. 이 경우 Rubik이라는 글꼴을 사용합니다. 이 글꼴로 작동시키는 법을 알고 있습니까?

+0

시도 label.textAlignment = .center – Joe

+0

변경된 사항이 없습니다. –

+0

'paragraphStyle.headIndent'를 사용하지 않으려면 label.lineaBreakMode = .ByTruncatingTail 또는 ByWordWrapping 또는 다른 모드 – Joe

답변

1

참고 : 나는 당신이 paragraphStyle.headIntent를 사용한다 headIntent를 사용하려면 .If 코드 당신은 당신의 first lineheadIntent 설정 당신이 당신의 post.From에 언급 된 테스트 글꼴로 Rubik-Regular font 사용하고.

let text = "Hello World! Hello World! Hee" 
    let attString = NSMutableAttributedString(string: text) 
    let paragraphStyle = NSMutableParagraphStyle() 
    paragraphStyle.alignment = .left 
    paragraphStyle.firstLineHeadIndent = 40 
    paragraphStyle.headIndent = 40 
    paragraphStyle.lineBreakMode = .byTruncatingTail 
    attString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attString.length)) 
    attString.addAttribute(NSFontAttributeName, value: UIFont(name: "Rubik-Regular", size: 25)!, range: NSMakeRange(0, attString.length)) 
    label.attributedText = attString 
    label.numberOfLines = 0 
+0

그러나 모든 줄에 들여 쓰기가 필요 없습니다. 오직 처음. 문제는 단지 한 줄의 텍스트가 있고 꼬리말이 거칠어지는 경우입니다. –