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


274

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



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

각 줄마다 새로운을 사용하고 UILabel모든 레이블을에 삽입하십시오 StackView. 마지막으로 조정 spacing의 StackView. 수직으로 쌓아 두십시오.
— 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.