How to Increase Line spacing in UILabel in Swift How to Increase Line spacing in UILabel in Swift swift swift

How to Increase Line spacing in UILabel in Swift


Programatically add LineSpacing to your UILabel using following snippet.

Earlier Swift version

let attributedString = NSMutableAttributedString(string: "Your text")// *** Create instance of `NSMutableParagraphStyle`let paragraphStyle = NSMutableParagraphStyle()// *** set LineSpacing property in points ***paragraphStyle.lineSpacing = 2 // Whatever line spacing you want in points// *** Apply attribute to string ***attributedString.addAttribute(NSParagraphStyleAttributeName, value:paragraphStyle, range:NSMakeRange(0, attributedString.length))// *** Set Attributed String to your label ***label.attributedText = attributedString

Swift 4.0

let attributedString = NSMutableAttributedString(string: "Your text")// *** Create instance of `NSMutableParagraphStyle`let paragraphStyle = NSMutableParagraphStyle()// *** set LineSpacing property in points ***paragraphStyle.lineSpacing = 2 // Whatever line spacing you want in points// *** Apply attribute to string ***attributedString.addAttribute(NSAttributedStringKey.paragraphStyle, value:paragraphStyle, range:NSMakeRange(0, attributedString.length))// *** Set Attributed String to your label ***label.attributedText = attributedString

Swift 4.2

let attributedString = NSMutableAttributedString(string: "Your text")// *** Create instance of `NSMutableParagraphStyle`let paragraphStyle = NSMutableParagraphStyle()// *** set LineSpacing property in points ***paragraphStyle.lineSpacing = 2 // Whatever line spacing you want in points// *** Apply attribute to string ***attributedString.addAttribute(NSAttributedString.Key.paragraphStyle, value:paragraphStyle, range:NSMakeRange(0, attributedString.length))// *** Set Attributed String to your label ***label.attributedText = attributedString


From Interface Builder:

enter image description here

Programmatically:

SWift 4 & 4.2

Using label extension

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)        }        // (Swift 4.2 and above) Line spacing attribute        attributedString.addAttribute(NSAttributedString.Key.paragraphStyle, value:paragraphStyle, range:NSMakeRange(0, attributedString.length))        // (Swift 4.1 and 4.0) Line spacing attribute        attributedString.addAttribute(NSAttributedStringKey.paragraphStyle, value:paragraphStyle, range:NSMakeRange(0, attributedString.length))        self.attributedText = attributedString    }}

Now call extension function

let label = UILabel()let stringValue = "Set\nUILabel\nline\nspacing"// Pass value for any one argument - lineSpacing or lineHeightMultiplelabel.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

Or using label instance (Just copy & execute this code to see result)

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 48style.minimumLineHeight = 20 // change line spacing between each line like 30 or 40// Line spacing attributeattrString.addAttribute(NSAttributedStringKey.paragraphStyle, value: style, range: NSRange(location: 0, length: stringValue.characters.count))// Character spacing attributeattrString.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 48style.minimumLineHeight = 20 // change line spacing between each line like 30 or 40attrString.addAttribute(NSParagraphStyleAttributeName, value: style, range: NSRange(location: 0, length: stringValue.characters.count))label.attributedText = attrString


You can control the line spacing in storyboard.

enter image description here

Same question.