首頁>Program>source

如何修改多行 UILabel中行之間的間距(行間距) ?

最新回復
  • 5月前
    1 #

    Edit: 顯然是 NSAttributedString 將在iOS 6及更高版本上執行此操作.而不是使用 NSString 設置標簽的文字,建立一个 NSAttributedString ,在其上設置屬性,然後將其設置為 .attributedText 在標簽上.您想要的代碼將如下所示:

    NSMutableAttributedString* attrString = [[NSMutableAttributedString  alloc] initWithString:@"Sample text"];
    NSMutableParagraphStyle *style = [[NSMutableParagraphStyle alloc] init];
    [style setLineSpacing:24];
    [attrString addAttribute:NSParagraphStyleAttributeName
        value:style
        range:NSMakeRange(0, strLength)];
    uiLabel.attributedText = attrString;
    

    NSAttributedString的旧attributedStringwithString做同樣的事情,但是現在已被棄用。

    出於歷史原因,這是我的原始答案:

    Short answer: 你不能.要更改文字行之間的間距,您必须將 UILabel子類化 並滚動自己的 drawTextInRect ,建立多个標簽或使用其他字型(可能是针對特定的行高进行了編輯,請參见Phillipe的答案)。

    Long answer: 在印刷和線上世界中,文字行之間的間隔被稱為"前匯"(帶有"標题"的押韵,来自几十年前使用的铅金屬). Leading是 UIFont的只讀屬性 ,在4.0中已棄用,並由 lineHeight取代 .据我所知,無法用一組特定的引數(例如 lineHeight)建立字型 ; 您可以获得系統字型和添加的任何自定義字型,但是一旦安裝就無法對其进行調整。

    UILabel中没有間距引數 ,或者。

    我對 UILabel並不特別满意 的行為不變,因此建議您編寫自己的子類或使用3rd-party庫.這將使行為独立於您的字型選擇,並成為最可重用的解決方案。

    我希望在 UILabel中有更大的靈活性 ,很高兴被證明是錯誤的!

  • 5月前
    2 #

    从ios 6開始,您可以在UILabel中設置屬性字元串:

    NSString *labelText = @"some text"; 
    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:labelText];
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    [paragraphStyle setLineSpacing:40];
    [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [labelText length])];
    cell.label.attributedText = attributedString ;
    

  • 5月前
    3 #

    您可以在情节提要中控製行間距:

    重複問题

  • 5月前
    4 #

    From Interface Builder:

    Programmatically:

    SWift 4

    使用標簽擴充套件名

    extension UILabel {
        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 = "Set\nUILabel\nline\nspacing"
    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
    

    Swift 3

    let label = UILabel()
    let stringValue = "Set\nUILabel\nline\nspacing"
    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
    

  • 5月前
    5 #

    我的解決方案是修補字型檔案本身並確定其行高。 http://mbauman.net/geek/2009/03/15/minor-truetype-font-editing-on-a-mac/

    我必须在" hhea"塊中修改" lineGap"," ascender"," descender"(如博客示例中所示)。

  • numpy dot()和Python 35+矩陣乘法之間的區別@
  • PHP名稱空間和"使用"