iosswiftuilabelnsparagraphstyleline-spacing

UILabel - How to add space between lines in Swift 3


I've UILabel with paragraphic information (multiline text) and I want add some spaces between lines, similar to this image.

this image

Please help me to do it. I've tried to checkout all documentation of apple developer regarding Label and line spacing but could find.


Solution

  • From Interface Builder (Storyboard/XIB):

    enter image description here

    Programmatically:

    SWift 4

    Using label extension

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

    Now call extension function

    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
    

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

    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
    

    Swift 3

    let label = UILabel()
    let stringValue = "Sample text"
    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