如何在单个UILabel中使用多个间距

时间:2018-07-18 10:40:37

标签: ios swift xcode uilabel

我有一个字符串数组,我从数组对象中创建了一个字符串

let stringForLabel = arrayContaingStrings.joined(separator: "\n")

但是当我在单个UILabel中显示它时,很难阅读如下内容 enter image description here

上面标签中的第六行和第七行是单行,如

 Nowy Dwor Mazowiecki, Poland

但是由于屏幕宽度显示为2行。所以我将以以下格式显示

enter image description here

如何在UIlabel中实现此间距?我尝试增加情节提要中的行距,但随后会增加标签中的所有行距。 (两张图片的内容不同,我只想显示两种情况下的行距)

1 个答案:

答案 0 :(得分:1)

\n换行符检测到段落。段落之间的行距和lineBreakModes的行距将有所不同。

lineBreakMode间距相比,您可以使用paragraphSpacing在段落之间添加额外的间距。 也尝试lineHeightMultiple

上面提供了Apple Docs链接。

尝试使用此 UILabel扩展

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
    paragraphStyle.paragraphSpacing = 10

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