UILabel'de satır aralığı nasıl kontrol edilir


274

Bir satırda birden çok satıra yerleştirildiğinde metin arasındaki boşluğu azaltmak mümkün müdür UILabel? Çerçeve, yazı tipi boyutu ve satır sayısını ayarlayabiliriz. Bu etiketteki iki satır arasındaki boşluğu azaltmak istiyorum.



2
İOS 6.0 ve sonraki sürümler için doğru yanıtlardan birini kabul etmenizi önerebilir miyim? Şu anda kabul edilen cevap güncel değil.
Mark Amery

Her satır için yeni UILabelbir etiket kullanın , ardından tüm etiketleri a StackView. Nihayet ayarlamak spacingait StackView. Onları dikey olarak istiflemeyi unutmayın.
Tatlım

Swift 2'deki çözüm için aşağıdaki bağlantıya bakın. Stackoverflow.com/a/39158698/6602495
Sneha

Film şeridi ayarları ve diğer ayrıntılar için stackoverflow.com/a/44325650/342794 adresine bakın .
lal

Yanıtlar:


262

Bu cevaba yeni bir şeyler eklemeyi düşündüm, o yüzden kendimi kötü hissetmiyorum ... İşte bir Swift cevabı:

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

"Kısa cevap: yapamazsınız. Metin satırları arasındaki boşluğu değiştirmek için, UILabel'i alt sınıflara ayırmanız ve kendi drawTextInRect öğenizi yuvarlamanız veya birden çok etiket oluşturmanız gerekir."

Bkz. UILabel satır aralığını ayarlama


Bu gerçekten eski bir yanıt, ve diğerleri bunu ele almak için yeni ve daha iyi bir yol ekledi. Lütfen aşağıda verilen güncel cevaplara bakın.


23
NSAttributedStringİOS 6.0'dan beri kontrol edebilirsiniz (Xcode'un arayüz oluşturucusundaki UILable özelliklerinde de mevcuttur).
ıɾuǝʞ

13
İlginç bir şekilde, anlayabildiğim kadarıyla, çizgiler arasına ekstra boşluk ekleyebilir, ancak NSParagraphStylebir NSAttributedString. (Diğer değiştirilebilir özelliklerin daha fazla testini yapmam gerekebilir, ancak lineSpacingmülk yalnızca onu artırmanıza izin verir.)
livingtech

NSAttributedString
d.ennis

2
@livingtech Bu sinir bozucu ve doğru olduğuna inanıyorum. Herhangi bir çözüm buldunuz mu?
Dom Vinyard

7
Sadece bu konudaki bir şeyi açıklığa kavuşturmak için. [ParagraphStyle setLineHeightMultiple: 0.8] küçültmek için satır aralığı gibi, daha düşük bir değere <1.0, daha sonra setLineHeightMultiple 1.0 hattı yüksekliğini ayarlamak ve ya paragraphStyle.lineHeightMultiple = 0.8
virsunen

401

Xcode 6'da bunu film şeridinde yapabilirsiniz:

resim açıklamasını buraya girin


1
Film şeridinin daha fazla avantajından yararlanın!
Allen

22
6.1.1'de aynı sorunu yaşıyoruz. Birkaç dakika "harlem sallamak". Nasıl düzeltileceğini bilmiyor :) Xcode Sallama
Anton Gaenko

8
Özel yazı tiplerini bu şekilde ayarlamanın bir yolu var mı? Bu helvetica neue'yi başka bir yazı tipiyle değiştiremiyorum.
Marcos Curvello

2
'Attributed' seçeneğini etkinleştirir ve ardından dosyayı kaynak kodu olarak açarsanız, 'lineHeightMultiple' öğesini el ile düzenleyebilir ve bu nedenle
ED-209

2
@azdev hala bu bakarak herkes için, ben daha uzun Xcode 7.3 sallar alıyorum, ama bence bu bir sorun değildi ilk sürümü
LulzCow

103

İOS 6'dan başlayarak, UILabel'e atfedilen bir dize ayarlayabilirsiniz. Aşağıdakileri kontrol et :

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
attributedStringBir olmalıdır NSMutableAttributedString(NOT NSAttributedString)
Mike S

14
İlk satır kodu şu olmalıdırNSMutableAttributedString *attributedString = [NSMutableAttributedString alloc]initWithString:@"sample text"];
Allen

lineSpacingMülkiyet NSMutableParagraphStylesatır yüksekliği bu yaklaşımla indirgenemez yüzden, asla negatiftir. Soruyu cevaplamak için başka bir mülk kullanmalısınız, bkz. @ D.ennis yanıtı.
Theo

81

Burada belirtilen çözümler benim için işe yaramadı. IOS 6 NSAttributeString ile yapmanın biraz farklı bir yolunu buldum:

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
Satır yüksekliği yazı tipi boyutuna bağlıdır. Satır aralığı sadece satır aralığıdır. Yalnızca min / maks satır yüksekliğini ayarlayarak işinizi halledebilirsiniz, ancak bunun nedeni yalnızca kullandığınız yazı tipi boyutlarının satır yüksekliği sınırlarından büyük olmamasıdır. Belgelere göre: "... bu yüksekliği aşan glifler ve grafikler komşu çizgilerin üzerine gelecektir ... Bu sınır çizginin kendisi için geçerli olsa da, satır aralığı bitişik çizgiler arasına fazladan boşluk ekler."
Ari Braginsky

+1, Çizgiler arasındaki boşluğu azaltmak istiyorsanız, bunu yapmak istersiniz. Gerçek satır aralığı büyük olasılıkla varsayılan olarak 0'dır, bu yüzden insanlar yalnızca artırabileceğinizi bildirir. Boşluğun çok büyük olması sorunu satır yüksekliğinin çok büyük olmasından kaynaklanır, bu yüzden işin% 99'unu yapmasını sağlar.
lawicko

1
Photoshop, Sketch, CSS, vb. Gibi tasarım uygulamalarında ortak olan gerçek satır yüksekliği değerini (oran yerine) kullanan bulabildiğim tek cevap budur
Albert Bori

35

Benim için çok iyi çalışan bu basit uzantıyı yaptım:

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
    }
}

Bunu bir dosyaya kopyalayın, böylece böyle kullanabilirsiniz

myLabel.setLineHeight(0.7)

bu etiket için Storyboard'u kullanırken bunu yapıyorsanız, etiketinizin satırlarını 0 olarak ayarladığınızdan emin olun
Honey

Neden doğrudan ayarlayıp ayarlamayı lineSpacingunutmuyorsunuz lineHeightMultiple?
Tatlım

Satır yüksekliğini azaltmanın anahtarı 'lineHeightMultiple' olduğundan, satır yok Aralık
Agustin Meriles

satır yüksekliğinizin 1.4 olmasını istediğinizi söyleyin, neden sadece hakkında yazıp .lineSpacing = 1.4unutamıyorsunuz .lineHeightMultiple...
Honey

Hah! Denedim ve çalışmadım, ama neden mekanizmanızı kullanmadığına dair başka cevaplar görmüyorum, yani doğrudan çizgiyi belirlediler. Kabul edilen cevabı görün ...
Honey

33

Arayüz Oluşturucu'dan (Storyboard / XIB):

resim açıklamasını buraya girin

Programlı:

SWIFT 4

Etiket uzantısını kullanma

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
    }
}

Şimdi telefon uzantısı fonksiyonu

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

Veya label örneğini kullanarak (Sonucu görmek için bu kodu kopyalayıp yürütün)

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

Hızlı 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
Orijinal hizalamayı korumak için "paragrafStyle.alignment = self.textAlignment" satırını ekleyin. Aksi takdirde, metin sola hizalanır.
Nithin Michael

Büyük metinlerde üç nokta kaybeden herkes için şunu kullanın: paragrafStyle.lineBreakMode = .byTruncatingTail
christostsang



11

Swift'te ve bir fonksiyon olarak, DarkDust'tan ilham aldı

// 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's Answer'a göre azaltmak lineHeightMultipleönemli bir noktadır. Aşağıdaki örnek, benim için iyi çalışıyor:

    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 satırlar arasındaki boşluğu daha kolay ayarlamak için kullanışlı eklenti :)

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

Gerçek satır yüksekliğini (bir faktör değil) ayarlayabileceğiniz bir yol buldum ve hatta Interface Builder'da canlı hale getiriyor . Aşağıdaki talimatları uygulamanız yeterlidir. Kod Swift 4'te yazılmıştır .


Adım # 1: adlı bir dosya oluşturun DesignableLabel.swiftve aşağıdaki kodu ekleyin:

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
        }
    }
}

Adım # 2: Place UILabelbir Storyboard / XIB'nin içine ve onun sınıfını ayarlayın DesignableLabel. Projenizin inşa edilmesini bekleyin (derleme başarılı olmalı!).

UILabel'inize sınıfı belirtme


Adım 3: Şimdi özellikler bölmesinde "Satır Yüksekliği" adlı yeni bir özellik görmelisiniz. Sadece istediğiniz değeri ayarlayın ve sonuçları hemen görmelisiniz!

Özelliklerde Satır Yüksekliğini Ayarlama


2

Burada, lineHeightMultipleiç yüksekliğin metni kesmeyecek kadar büyük olduğundan emin olan ve ayarlayan bir UILabel alt sınıfı bulunmaktadır .

@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()
    }
}

fazladan dolgu (lineHeightMultiple - 1.0) * font.pointSize olmalıdır, değil mi?
Pavel Alexeev

Yukarıdaki kod benim için çalışıyor gibi görünüyordu. Ama belki haklısın. Değişikliğini denedin mi? @PavelAlexeev
phatmann

Hayır, lineHeightMultiple yerine lineSpacing ile yapışıyorum :)
Pavel Alexeev

1

Swift 2.0'da ...

Bir uzantı ekleyin:

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
    }
}

Şimdi, UILabel'inizi attributedText olarak ayarlayın:

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

Açıkçası, ihtiyaç duymayabileceğiniz bir grup parametre ekledim. Oyun oynayın - yöntemi yeniden yazmaktan çekinmeyin - Bunu bir sürü farklı cevap üzerinde arıyordum, bu yüzden orada birine yardım etmesi durumunda tüm uzantıyı yayınlayacağımı düşündüm ...


1

Swift3 - Bir UITextView veya UILabel uzantısında bu işlevi ekleyin:

Ben zaten manzaralı (eğer üzerine yazmak yerine) ile ilişkilendirilmiş dizeleri kullanıyorsanız geçerli atfedilen metni tutmak için bazı kod ekledi.

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

Başka bir cevap ... Dizeyi programlı olarak geçiriyorsanız, normal bir dize yerine ilişkilendirilmiş bir dize geçirmeniz ve stilini değiştirmeniz gerekir. (İOS10)

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

Swift 3 uzantısı:

    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

Bu yardımcı olacaktır. Ardından etiketinizi film şeridi içindeki bu özel sınıfa atayabilir ve parametrelerini doğrudan özellikler içinde kullanabilirsiniz:

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
        }
    } 
}

Bu yardımcı olacaktır. Ardından etiketinizi film şeridi içindeki bu özel sınıfa atayabilir ve parametrelerini doğrudan özellikler içinde kullanabilirsiniz.
Russell Warwick

lütfen cevabınızla ilgili içeriği yorumlara yazmayın. cevabınız yorumları okumak zorunda kalmadan faydalı olmalıdır
Neuron

1

Swift 4 etiket uzantısı. İlişkilendirilmiş metin için gerekli ek özellikler olması durumunda, işleve geçmeden önce NSMutableAttributedString oluşturma.

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

Bu kod benim için çalıştı (ios 7 ve ios 8 kesin).

_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

İşte benim çözümüm hızlı. Alt sınıf, attributeText ve text özelliği için ve characterSpacing + lineSpacing için çalışmalıdır. Yeni bir dize veya attributedString ayarlanmışsa, aralığı korur.

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

Çabuk-kirli-akıllı-basit bir çözüm olarak:

Çok fazla çizgisi olmayan UILabels için bunun yerine stackViews kullanabilirsiniz.

  1. Her satır için yeni bir etiket yazın.
  2. Bunları bir StackView içine gömün. (Her iki etiketi de seçin -> Editör -> Katıştır -> StackView
  3. Ayarlayın Spacingistediğiniz miktara StackView arasında

Dikey olarak istiflediğinizden emin olun . Bu çözüm ayrıca özel yazı tipleri için de kullanılabilir.

resim açıklamasını buraya girin


FWIW bu korkunç ama uygulanabilir bir çözüm. Bu yüzden saklıyorum.
Bal

Ayrıca, iOS geliştiricilerinin grafik oluşturmak için yığın görünümlerini kullanması ilkesini gördüm. Stackviews çok güçlü
Honey
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.