首页>Program>source

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

最新回答
  • 8月前
    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中有更大的灵活性 ,很高兴被证明是错误的!

  • 8月前
    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 ;
    

  • 8月前
    3 #

    您可以在情节提要中控制行间距:

    重复问题

  • 8月前
    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
    

  • 8月前
    5 #

    我的解决方案是修补字体文件本身并确定其行高。 http://mbauman.net/geek/2009/03/15/minor-truetype-font-editing-on-a-mac/

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

  • numpy dot()和Python 35+矩阵乘法之间的区别@
  • PHP名称空间和"使用"