UILabel line height in Swift

Sviluppando App iOS capita spesso di dover implementare parti di Design che includono paragrafi di testo. Molto spesso può accadere che l’interlinea di sistema non sia quello desiderato.

Interlinea

Screen-Shot-2015-10-30-at-15.20.26

L’interlinea, come riportato nell’immagine, è l’altezza di ogni riga del paragrafo di testo includendo l’altezza del font stesso.

UILabel + LineHeight

Sfortunatamente le API native di iOS non mettono nulla a disposizione per impostare il LineHeight all’interno di una UILabel. Per ovviare a questo problema Apple propone due classi molto potenti, NSMutableAttributedString NSMutableParagraphStyle

Come indicato nella documentazione Apple:

The NSMutableParagraphStyle class adds methods to its superclass, NSParagraphStyle, for changing the values of the subattributes in a paragraph style attribute. See the NSParagraphStyle and NSAttributedString specifications for more information.

NSMutableParagraphStyle fornisce il metodo che fa al caso nostro: lineSpacing.

LineSpacing ci consente di applicare ad una stringa un lineHeight desiderato.

Per integrare questa funzionalità all’interno di una UILabel ho creato un estensione della UILabel implementando un apposita funzione, setLineHeight(lineHeight: CGFloat).

Di seguito è riportato il frammento di codice da integrare all’interno dei vostri progetti, il quale è disponibile anche sul nostro repository su GitHub:

Settori

  • Blog
  • iOS
  • Swift