2009-11-15 2 views
2

최대 3 줄까지 사용할 수있는 다중 행 UILabel이 있습니다. 즉, message.numberOfLines = 3;목표 C - UILabel 다중 행 수직 간격 높이

모든 것이 잘 작동하지만 어떻게 선 사이의 수직 간격을 설정할 수 있습니까? 예 : 1 호선과 2 호선 등?

ENLIGHT 제발, 내가 선 사이의 간격을 조정하는 방법을 찾을 수 없어

+0

이 도움이 될 : http://stackoverflow.com/questions/ 3880526/줄 간격을 두 줄로 늘어나는 방법 –

답변

3


티. UILabel의 font 속성에는 많은 읽기 전용 속성이 있으므로 도움이되지 않습니다.

줄 간격을 변경하려면 내 텍스트를 그려야합니다. NSString의 -drawAtPoint와 -drawInRect를 사용하고 -sizeWithFont 메소드 중 하나 이상을 사용하여 텍스트를 분할하여 줄 당 단어 또는 문자의 올바른 수를 그리기위한 텍스트의 길이를 파악합니다.

+0

감사합니다. 몇 가지 예제 코드를 추가 하시겠습니까? –

+2

예, 선 높이를 읽기 전용으로 만드는 것은 매우 궁금한 부분입니다. 마찬가지로, "누가 그것을 조정하고 싶습니까?" :) –

0

내가 아는이 유일한 방법은 텍스트를 직접 그려 보는 것입니다. 3.2 이상에서는 CoreText를 사용하여 텍스트를 직접 그릴 수 있습니다. iPhone> = 4.0에서 CT를 사용할 수 있는지 확실하지 않습니다. CoreText는 유연한 텍스트 그리기를위한 기능적인 C API입니다. 프로그래밍

0

:

스위프트 4

라벨 확장을

extension UILabel { 

    // Pass value for any one of both parameters and see result 
    func setLineSpacing(lineSpacing: CGFloat = 0.0, lineHeightMultiple: CGFloat = 0.0) { 

     guard let labelText = self.text else { return } 

     let paragraphStyle = NSMutableParagraphStyle() 
     paragraphStyle.lineSpacing = lineSpacing 
     paragraphStyle.lineHeightMultiple = lineHeightMultiple 

     let attributedString:NSMutableAttributedString 
     if let labelattributedText = self.attributedText { 
      attributedString = NSMutableAttributedString(attributedString: labelattributedText) 
     } else { 
      attributedString = NSMutableAttributedString(string: labelText) 
     } 

     // Line spacing attribute 
     attributedString.addAttribute(NSAttributedStringKey.paragraphStyle, value:paragraphStyle, range:NSMakeRange(0, attributedString.length)) 

     self.attributedText = attributedString 
    } 
} 

이제 전화 확장 기능

let label = UILabel() 
let stringValue = "How to\ncontrol\nthe\nline spacing\nin UILabel" 

// Pass value for any one argument - lineSpacing or lineHeightMultiple 
label.setLineSpacing(lineSpacing: 2.0) . // try values 1.0 to 5.0 

// or try lineHeightMultiple 
//label.setLineSpacing(lineHeightMultiple = 2.0) // try values 0.5 to 2.0 

또는 사용 리터를 사용하여 아벨 인스턴스는 인터페이스 빌더에서

let label = UILabel() 
let stringValue = "How to\ncontrol\nthe\nline spacing\nin UILabel" 
let attrString = NSMutableAttributedString(string: stringValue) 
var style = NSMutableParagraphStyle() 
style.lineSpacing = 24 // change line spacing between paragraph like 36 or 48 
style.minimumLineHeight = 20 // change line spacing between each line like 30 or 40 

// Line spacing attribute 
attrString.addAttribute(NSAttributedStringKey.paragraphStyle, value: style, range: NSRange(location: 0, length: stringValue.characters.count)) 

// Character spacing attribute 
attrString.addAttribute(NSAttributedStringKey.kern, value: 2, range: NSMakeRange(0, attrString.length)) 

label.attributedText = attrString 

를 (그냥 &는 결과를 보려면이 코드를 실행 복사) :

enter image description here