UILabel에서 줄 간격을 제어하는 ​​방법


274

에 여러 줄을 넣을 때 텍스트 사이의 간격을 줄일 수 UILabel있습니까? 프레임, 글꼴 크기 및 줄 수를 설정할 수 있습니다. 해당 레이블의 두 줄 사이의 간격을 줄이려고합니다.



2
iOS 6.0 이상에 맞는 답변 중 하나를 수락 할 것을 제안 할 수 있습니까? 현재 승인 된 답변이 오래되었습니다.
Mark Amery

각 줄마다 새로운을 사용하고 UILabel모든 레이블을에 삽입하십시오 StackView. 마지막으로 조정 spacingStackView. 수직으로 쌓아 두십시오.
Honey

Swift 2의 솔루션은 다음 링크를 참조하십시오. stackoverflow.com/a/39158698/6602495
Sneha

스토리 보드 조정 및 기타 세부 사항 은 stackoverflow.com/a/44325650/342794 를 참조 하십시오.
lal

답변:


262

이 답변에 새로운 것을 추가하는 것에 대해 생각했기 때문에 나쁘지 않습니다 ... 여기 스위프트 답변이 있습니다.

import Cocoa

let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = 40

let attrString = NSMutableAttributedString(string: "Swift Answer")
attrString.addAttribute(.paragraphStyle, value:paragraphStyle, range:NSMakeRange(0, attrString.length))

var tableViewCell = NSTableCellView()
tableViewCell.textField.attributedStringValue = attrString

"짧은 대답 : 할 수 없습니다. 텍스트 줄 사이의 간격을 변경하려면 UILabel을 서브 클래스로 만들고 자체 drawTextInRect를 굴 리거나 여러 레이블을 만들어야합니다."

참조 : UILabel 줄 간격 설정


이것은 정말 오래된 답변이며 다른 사람들은 이미 이것을 처리하는 새롭고 더 나은 방법을 추가했습니다. 아래 제공된 최신 답변을 참조하십시오.


23
iOS 6.0부터는 NSAttributedString(Xcode의 인터페이스 빌더에서 UILable 속성에서도 사용 가능)을 통해 제어 할 수 있습니다 .
ıɾuǝʞ

13
흥미롭게도, 내가 알 수있는 한 줄 사이에 여분의 간격을 추가 할 수 있지만를 NSParagraphStyle사용할 때 줄을 줄이지는 않습니다 NSAttributedString. (다른 수정 가능한 속성에 대해 더 많은 테스트를 수행해야 할 수도 있지만 lineSpacing속성을 사용하면 속성을 높일 수 있습니다.)
livingtech

NSAttributedString을 사용하는 방법을 보려면 내 대답 을 참조하십시오.
d.ennis

2
@livingtech 그것은 화나고, 나는 당신이 맞다고 생각합니다. 해결 방법을 찾았습니까?
Dom Vinyard

7
이 스레드에서 무언가를 명확히하기 위해. [paragraphStyle setLineHeightMultiple : 0.8]을 축소 할 경우 줄 간격과 같은 낮은 값 <1.0 다음 setLineHeightMultiple를 1.0으로 라인 높이를 설정하고, 또는 paragraphStyle.lineHeightMultiple = 0.8
virsunen

401

Xcode 6에서는 스토리 보드에서이를 수행 할 수 있습니다.

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


1
스토리 보드의 더 많은 이점을 누리십시오!
Allen

22
@PaperThick은 6.1.1에서 동일한 문제가 있습니다. 몇 분 동안 "할렘 쉐이크"입니다. 그것을 고치는 방법을 모른다 :) Xcode Shaking
Anton Gaenko

8
이 방법으로 사용자 정의 글꼴을 설정하는 방법이 있습니까? 나는 그 helvetica를 다른 글꼴로 바꿀 수없는 것 같습니다.
마르코스 커브로

2
'Attributed'를 활성화 한 다음 파일을 소스 코드로 열면 'lineHeightMultiple'을 수동으로 편집하여 Harlem Shake 버그
ED-209를

2
@azdev 아직도 이것을보고있는 누군가를 위해, 나는 Xcode 7.3에서 더 이상 흔들리지 않을 것이지만, 이것이 문제가되지 않은 첫 번째 버전이라고 생각합니다
LulzCow

103

iOS 6부터 UILabel에 속성 문자열을 설정할 수 있습니다. 다음을 확인하십시오.

NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:label.text];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineSpacing = spacing;
[attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, label.text.length)];

label.attributedText = attributedString;

1
attributedString해야합니다 NSMutableAttributedString(NOT NSAttributedString은)
마이크 S

14
첫 번째 라인 코드는 다음과 같아야합니다.NSMutableAttributedString *attributedString = [NSMutableAttributedString alloc]initWithString:@"sample text"];
Allen

lineSpacing속성은 NSMutableParagraphStyle음수가 아니므로이 방법으로 줄 높이를 줄일 수 없습니다. 질문에 대답하려면 다른 속성을 사용해야합니다. @ d.ennis 답변을 참조하십시오.
Theo

81

여기에 언급 된 솔루션은 효과가 없었습니다. iOS 6 NSAttributeString으로 약간 다른 방법을 찾았습니다.

myLabel.numberOfLines = 0; 
NSString* string = @"String with line one. \n Line two. \n Line three.";
NSMutableParagraphStyle *style  = [[NSMutableParagraphStyle alloc] init];
style.minimumLineHeight = 30.f;
style.maximumLineHeight = 30.f;
NSDictionary *attributtes = @{NSParagraphStyleAttributeName : style,};
myLabel.attributedText = [[NSAttributedString alloc] initWithString:string
                                                         attributes:attributtes];   
[myLabel sizeToFit];

1
줄 높이는 글꼴 크기에 따라 다릅니다. 줄 간격은 바로 줄 간격입니다. 최소 / 최대 줄 높이를 설정하여 문제를 해결할 수도 있지만 사용중인 현재 글꼴 크기가 줄 높이 경계보다 크지 않기 때문입니다. 문서에 따르면 : "...이 높이를 초과하는 글리프 및 그래픽은 인접한 선과 겹치게됩니다.이 제한은 선 자체에 적용되지만 줄 간격은 인접한 선 사이에 추가 공간을 추가합니다."
Ari Braginsky

+1, 줄 간격을 줄이려면이 작업을 수행하십시오. 실제 줄 간격은 기본적으로 0 일 가능성이 높습니다. 따라서 사람들은 줄 간격을 늘릴 수 있다고보고합니다. 간격이 너무 큰 문제는 라인 높이가 너무 커서 발생하므로 99 %의 시간을 작업이 수행하게됩니다.
lawicko

1
이것은 Photoshop, Sketch, CSS 등과 같은 응용 프로그램을 설계 할 때 일반적으로 사용되는 실제 선 높이 값 (비 대신)을 사용하는 유일한 대답입니다.
Albert Bori

35

이 간단한 확장 프로그램을 만들어서 매우 잘 작동했습니다.

extension UILabel {
    func setLineHeight(lineHeight: CGFloat) {
        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.lineSpacing = 1.0
        paragraphStyle.lineHeightMultiple = lineHeight
        paragraphStyle.alignment = self.textAlignment

        let attrString = NSMutableAttributedString()
        if (self.attributedText != nil) {
            attrString.append( self.attributedText!)
        } else {
            attrString.append( NSMutableAttributedString(string: self.text!))
            attrString.addAttribute(NSAttributedStringKey.font, value: self.font, range: NSMakeRange(0, attrString.length))
        }
        attrString.addAttribute(NSAttributedStringKey.paragraphStyle, value:paragraphStyle, range:NSMakeRange(0, attrString.length))
        self.attributedText = attrString
    }
}

이것을 파일로 복사하면 다음과 같이 사용할 수 있습니다

myLabel.setLineHeight(0.7)

이 레이블에 스토리 보드를 사용하는 동안이 작업을 수행하는 경우 레이블 행을 0
Honey

왜 직접 설정하고 lineSpacing설정을 잊어 버리지 lineHeightMultiple않습니까?

줄 높이를 줄이는 열쇠는 'lineHeightMultiple'이므로 줄 간격 없음
Agustin Meriles

당신이 당신의 선 높이를 1.4로하고 싶다고 말하면, 왜 당신은 단지 .lineSpacing = 1.4모든 것에 대해 쓰고 잊을 수 .lineHeightMultiple
Honey

하! 나는 노력했지만 효과가 없었지만, 왜 당신의 메커니즘을 사용하지 않는 다른 대답을 보지 못하는지 궁금합니다. 직접 줄 간격을 설정한다는 의미입니다. 허용 된 답변보기 ...
Honey

33

Interface Builder (Storyboard / XIB)에서 :

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

프로그래밍 방식으로 :

SWift 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

스위프트 3

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
attrString.addAttribute(NSParagraphStyleAttributeName, value: style, range: NSRange(location: 0, length: stringValue.characters.count))
label.attributedText = attrString

2
원래의 정렬을 유지하려면 "paramation.alignment = self.textAlignment"줄을 추가하십시오. 그렇지 않으면 텍스트가 정렬 된 상태로 유지됩니다.
Nithin Michael

큰 텍스트에 줄임표를 잃어버린 누군가를 위해, 다음 사용 paragraphStyle.lineBreakMode = .byTruncatingTail
christostsang


16

다음은 줄 높이 속성을 갖도록 UILabel을 서브 클래스로 만드는 클래스입니다. https://github.com/LemonCake/MSLabel


이것은 나를 위해 일했습니다. 감사합니다. 나는 또한 MTLabel을 사용하려고했지만 이것이 더 좋았습니다.
Denis Kutlubaev

1
MSLabel이 '\ n'문자를 지원하는지 아는 사람이 있습니까?
achi

11

Swift와 DarkDust에서 영감을 얻은 기능

// Usage: setTextWithLineSpacing(myEpicUILabel,text:"Hello",lineSpacing:20)
func setTextWithLineSpacing(label:UILabel,text:String,lineSpacing:CGFloat)
{
    let paragraphStyle = NSMutableParagraphStyle()
    paragraphStyle.lineSpacing = lineSpacing

    let attrString = NSMutableAttributedString(string: text)
    attrString.addAttribute(NSAttributedString.Key.paragraphStyle, value:paragraphStyle, range:NSMakeRange(0, attrString.length))

    label.attributedText = attrString
}

7

@ Mike의 답변에 따르면을 줄이는 lineHeightMultiple것이 핵심입니다. 아래 예는 저에게 효과적입니다.

    NSString* text = label.text;
    CGFloat textWidth = [text sizeWithAttributes:@{NSFontAttributeName: label.font}].width;
    if (textWidth > label.frame.size.width) {
        NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
        paragraph.alignment = NSTextAlignmentCenter;
        paragraph.lineSpacing = 1.0f;
        paragraph.lineHeightMultiple = 0.75;     // Reduce this value !!!
        NSMutableAttributedString* attrText = [[NSMutableAttributedString alloc] initWithString:text];
        [attrText addAttribute:NSParagraphStyleAttributeName value:paragraph range:NSMakeRange(0, text.length)];
        label.attributedText = attrText;
    }

6

SWIFT 3 라인 사이의 공간을 더 쉽게 설정하는 유용한 확장 기능 :)

extension UILabel
{
    func setLineHeight(lineHeight: CGFloat)
    {
        let text = self.text
        if let text = text 
        {

            let attributeString = NSMutableAttributedString(string: text)
            let style = NSMutableParagraphStyle()

           style.lineSpacing = lineHeight
           attributeString.addAttribute(NSParagraphStyleAttributeName,
                                        value: style,
                                        range: NSMakeRange(0, text.characters.count))

           self.attributedText = attributeString
        }
    }
}

5

실제 선 높이를 설정할 수있는 방법을 찾았으며 (인자가 아닌) Interface Builder에서 실시간으로 렌더링합니다 . 아래 지침을 따르십시오. 코드는 Swift 4 로 작성되었습니다 .


1 단계 : 이름이 지정된 파일을 DesignableLabel.swift만들고 다음 코드를 삽입하십시오.

import UIKit

@IBDesignable
class DesignableLabel: UILabel {
    @IBInspectable var lineHeight: CGFloat = 20 {
        didSet {
            let paragraphStyle = NSMutableParagraphStyle()
            paragraphStyle.minimumLineHeight = lineHeight
            paragraphStyle.maximumLineHeight = lineHeight
            paragraphStyle.alignment = self.textAlignment

            let attrString = NSMutableAttributedString(string: text!)
            attrString.addAttribute(NSAttributedStringKey.font, value: font, range: NSRange(location: 0, length: attrString.length))
            attrString.addAttribute(NSAttributedStringKey.paragraphStyle, value: paragraphStyle, range: NSRange(location: 0, length: attrString.length))
            attributedText = attrString
        }
    }
}

단계 # 2 : 놓습니다 UILabel스토리 보드 / XIB로하고 해당 클래스를 설정합니다 DesignableLabel. 프로젝트가 빌드 될 때까지 기다리십시오 (빌드가 성공해야합니다!).

UILabel에 클래스 지정


3 단계 : 이제 속성 창에 "Line Height"라는 새 속성이 표시됩니다. 원하는 값을 설정하면 결과가 즉시 나타납니다!

속성에서 선 높이 설정


2

다음은 UILabel의 서브 클래스로 lineHeightMultiple, 고유 높이가 텍스트를 자르지 않을만큼 충분히 커야합니다.

@IBDesignable
class Label: UILabel {
    override var intrinsicContentSize: CGSize {
        var size = super.intrinsicContentSize
        let padding = (1.0 - lineHeightMultiple) * font.pointSize
        size.height += padding
        return size
    }

    override var text: String? {
        didSet {
            updateAttributedText()
        }
    }

    @IBInspectable var lineHeightMultiple: CGFloat = 1.0 {
        didSet {
            updateAttributedText()
        }
    }

    private func updateAttributedText() {
        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.lineHeightMultiple = lineHeightMultiple
        attributedText = NSAttributedString(string: text ?? "", attributes: [
            .font: font,
            .paragraphStyle: paragraphStyle,
            .foregroundColor: textColor
        ])
        invalidateIntrinsicContentSize()
    }
}

추가 패딩은 (lineHeightMultiple-1.0) * font.pointSize 여야합니까?
Pavel Alexeev

위의 코드는 저에게 효과적입니다. 그러나 당신이 옳을 수도 있습니다. 당신은 변화를 시도 했습니까? @PavelAlexeev
phatmann

아니요, lineHeightMultiple 대신 lineSpacing을 사용합니다. :
Pavel Alexeev

1

스위프트 2.0에서 ...

확장명 추가 :

extension UIView {
    func attributesWithLineHeight(font: String, color: UIColor, fontSize: CGFloat, kern: Double, lineHeightMultiple: CGFloat) -> [String: NSObject] {
        let titleParagraphStyle = NSMutableParagraphStyle()
        titleParagraphStyle.lineHeightMultiple = lineHeightMultiple

        let attribute = [
            NSForegroundColorAttributeName: color,
            NSKernAttributeName: kern,
            NSFontAttributeName : UIFont(name: font, size: fontSize)!,
            NSParagraphStyleAttributeName: titleParagraphStyle
        ]
        return attribute
    }
}

이제 UILabel을 ratedText로 설정하십시오.

self.label.attributedText = NSMutableAttributedString(string: "SwiftExample", attributes: attributesWithLineHeight("SourceSans-Regular", color: UIColor.whiteColor(), fontSize: 20, kern: 2.0, lineHeightMultiple: 0.5))    

분명히, 나는 당신이 필요하지 않은 많은 매개 변수를 추가했습니다. 놀러 다니십시오-방법을 다시 쓰십시오. 나는 이것을 여러 가지 다른 답변에서 찾고 있었기 때문에 누군가를 도울 수 있도록 전체 확장을 게시 할 것이라고 생각했습니다 ...- rab


1

Swift3-UITextView 또는 UILabel 확장에서 다음 함수를 추가하십시오.

이미 표시된 속성 문자열을 덮어 쓰지 않고보기와 함께 사용하는 경우 현재 텍스트를 유지하는 코드를 추가했습니다.

func setLineHeight(_ lineHeight: CGFloat) {
    guard let text = self.text, let font = self.font else { return }

    let paragraphStyle = NSMutableParagraphStyle()
    paragraphStyle.lineSpacing = 1.0
    paragraphStyle.lineHeightMultiple = lineHeight
    paragraphStyle.alignment = self.textAlignment

    var attrString:NSMutableAttributedString
    if let attributed = self.attributedText {
        attrString = NSMutableAttributedString(attributedString: attributed)
    } else {
        attrString = NSMutableAttributedString(string: text)
        attrString.addAttribute(NSFontAttributeName, value: font, range: NSMakeRange(0, attrString.length))
    }
    attrString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attrString.length))
    self.attributedText = attrString
}

1

또 다른 대답 ... 프로그래밍 방식으로 문자열을 전달하는 경우 일반 문자열 대신 속성이 지정된 문자열을 전달하고 스타일을 변경해야합니다. (iOS10)

NSMutableAttributedString * attrString = [[NSMutableAttributedString alloc] initWithString:@"Your \nregular \nstring"];
NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
[style setLineSpacing:4];
[attrString addAttribute:NSParagraphStyleAttributeName
                   value:style
                   range:NSMakeRange(0, attrString.length)];
_label.attributedText = attrString;

1

스위프트 3 확장 :

    import UIKit

extension UILabel {
    func setTextWithLineSpacing(text: String, lineHeightMultiply: CGFloat = 1.3) {
        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.lineHeightMultiple = lineHeightMultiply
        paragraphStyle.alignment = .center
        let attributedString = NSMutableAttributedString(string: text)
        attributedString.addAttribute(NSParagraphStyleAttributeName, value: paragraphStyle, range: NSRange(location: 0, length: attributedString.length))
        self.attributedText = attributedString
    }
}

1

도움이 될 것입니다. 그런 다음 스토리 보드 내에서이 사용자 정의 클래스에 레이블을 지정하고 특성 내에서 직접 매개 변수를 사용할 수 있습니다.

open class SpacingLabel : UILabel {

    @IBInspectable open var lineHeight:CGFloat = 1 {
        didSet {
            let paragraphStyle = NSMutableParagraphStyle()
            paragraphStyle.lineSpacing = 1.0
            paragraphStyle.lineHeightMultiple = self.lineHeight
            paragraphStyle.alignment = self.textAlignment

            let attrString = NSMutableAttributedString(string: self.text!)
            attrString.addAttribute(NSAttributedStringKey.font, value: self.font, range: NSMakeRange(0, attrString.length))
            attrString.addAttribute(NSAttributedStringKey.paragraphStyle, value:paragraphStyle, range:NSMakeRange(0, attrString.length))
            self.attributedText = attrString
        }
    } 
}

도움이 될 것입니다. 그런 다음 스토리 보드 내에서이 사용자 정의 클래스에 레이블을 지정하고 특성 내에서 직접 매개 변수를 사용할 수 있습니다.
러셀 워윅

귀하의 답변과 관련된 내용을 의견에 넣지 마십시오. 귀하의 답변은 댓글을 읽지 않아도 도움이 될 것입니다
Neuron

1

스위프트 4 라벨 확장. 해당 텍스트에 추가 속성이 필요한 경우 함수에 전달하기 전에 NSMutableAttributedString 작성

extension UILabel {

    func setLineHeightMultiple(to height: CGFloat, withAttributedText attributedText: NSMutableAttributedString) {

        let paragraphStyle = NSMutableParagraphStyle()
        paragraphStyle.lineSpacing = 1.0
        paragraphStyle.lineHeightMultiple = height
        paragraphStyle.alignment = textAlignment

        attributedText.addAttribute(.paragraphStyle, value: paragraphStyle, range: NSRange(location: 0, length: attributedText.length - 1))

        self.attributedText = attributedText
    }
}

0

이 코드는 저에게 효과적이었습니다 (ios 7 및 ios 8).

_label.numberOfLines=2;
_label.textColor=[UIColor whiteColor];

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineHeightMultiple=0.5;
paragraphStyle.alignment = NSTextAlignmentCenter;
paragraphStyle.lineSpacing = 1.0;

NSDictionary *nameAttributes=@{
                               NSParagraphStyleAttributeName : paragraphStyle,
                               NSBaselineOffsetAttributeName:@2.0
                               };


NSAttributedString *string=[[NSAttributedString alloc] initWithString:@"22m\nago" attributes:nameAttributes];
_label.attributedText=string;

0

여기 내 신속한 해결책이 있습니다. 서브 클래스는 coloredText 및 text 속성과 characterSpacing + lineSpacing 모두에서 작동해야합니다. 새 문자열 또는 ValueedString이 설정된 경우 간격을 유지합니다.

open class UHBCustomLabel : UILabel {
    @IBInspectable open var characterSpacing:CGFloat = 1 {
        didSet {
            updateWithSpacing()
        }

    }
    @IBInspectable open var lines_spacing:CGFloat = -1 {
        didSet {
            updateWithSpacing()
        }

    }
    open override var text: String? {
        set {
            super.text = newValue
            updateWithSpacing()
        }
        get {
            return super.text
        }
    }
    open override var attributedText: NSAttributedString? {
        set {
            super.attributedText = newValue
            updateWithSpacing() 
        }
        get {
            return super.attributedText
        }
    }
    func updateWithSpacing() {
        let attributedString = self.attributedText == nil ? NSMutableAttributedString(string: self.text ?? "") : NSMutableAttributedString(attributedString: attributedText!)
        attributedString.addAttribute(NSKernAttributeName, value: self.characterSpacing, range: NSRange(location: 0, length: attributedString.length))
        if lines_spacing >= 0 {
            let paragraphStyle = NSMutableParagraphStyle()
            paragraphStyle.lineSpacing = lines_spacing
            paragraphStyle.alignment = textAlignment
            attributedString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attributedString.length))
        }
        super.attributedText = attributedString
    }
}

-5

더 빠르고 스마트하고 간단한 해결 방법 :

줄이 많지 않은 UILabels의 경우 대신 stackView를 사용할 수 있습니다.

  1. 각 줄마다 새 레이블을 작성하십시오.
  2. 그것들을 StackView에 포함시킵니다.
  3. SpacingStackView를 원하는 양으로 조정하십시오.

수직 으로 쌓아 두십시오 . 이 솔루션은 사용자 정의 글꼴에도 작동합니다.

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


그러나 이것은 끔찍하지만 실행 가능한 솔루션입니다. 따라서 나는 그것을 유지하고 있습니다.
Honey

또한 iOS 개발자가 그래프를 만들기 위해 스택 뷰를 사용하는 원리를 보았습니다. Stackviews는 매우 강력합니다
Honey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.