J'ai une étiquette qui a peu de lignes de texte et je veux augmenter l'espacement entre les lignes. Des questions similaires sont posées par d'autres mais les solutions ne résolvent pas mes problèmes. De plus, mon étiquette peut ou non contenir des paragraphes. Je suis nouveau au Swift
. Existe-t-il une solution utilisant le storyboard? Ou seulement à travers NSAttributedString
c'est possible?Comment faire pour augmenter l'interligne dans UILabel dans Swift
Répondre
Ajoutez ProgramSpacing à votre UILabel
en utilisant l'extrait suivant.
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;
J'ai effectivement essayé cela. Mais ça ne marche pas. De plus, cela n'est pas utile pour les polices personnalisées. – Sneha
Si vous faites face à un alignement incorrect dans les polices personnalisées, essayez de mettre à jour la propriété 'ascender' comme [mentionné ici] (http://stackoverflow.com/a/8314285/988169). – pkc456
Ce n'est pas un problème d'alignement incorrect. Je ne peux pas sélectionner ma police personnalisée avec la solution que vous avez indiquée @ pkc456 – Sneha
De Interface Builder:
Programmatically:
SWift 4
en utilisant l'extension de l'étiquette
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
}
}
appellent maintenant la fonction d'extension
let label = UILabel()
let stringValue = "Set\nUILabel\nline\nspacing"
// 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
Ou à l'aide par exemple d'étiquette (Il suffit de copier & exécuter ce code pour voir le résultat)
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
Swi ft 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
"NSAttributedStringKey.paragraphStyle" avait une erreur, j'ai utilisé "NSParagraphStyleAttributeName" à la place. – Alfi
@Alfi - C'est la différence de la version en langage Swift. Le langage rapide de votre projet. la version peut être 3.x rapide et voici les réponses pour les deux versions. Essayez avec le code Swift 3. – Krunal
Cela montre une erreur "Valeur de type 'NSAttributedString' n'a pas membre 'addAttribute'". – Sneha
Nous devons utiliser 'NSMutableAttributedString' à la place de' NSAttributedString'. J'ai mis à jour asnwer. –
Travailler avec des polices personnalisées Aussi génial @ Dipen Panchasara –