7

I'd like to change the letter spacing in the title of my navigation bar but I've had no success so far.

Thanks in advance.

user1681004
  • 109
  • 1
  • 2
  • 5

3 Answers3

6

A cool extension for UILabel:

extension UILabel{
func setCharacterSpacing(_ spacing: CGFloat){
    let attributedStr = NSMutableAttributedString(string: self.text ?? "")
    attributedStr.addAttribute(NSAttributedString.Key.kern, value: spacing, range: NSMakeRange(0, attributedStr.length))
    self.attributedText = attributedStr
 }
}

Usage:

label.setCharacterSpacing(4)
Quintus_2
  • 111
  • 2
  • 10
3

You can set the title via code passing the title string with some blank spacing ("E x a m p l e"), or with a tab (\t) or via code like this:

 let attributedString = NSMutableAttributedString(string: "Example")
 attributedString.addAttribute(NSKernAttributeName, value:   CGFloat(1.4), range: NSRange(location: 0, length: 9))

Then you assign attributedString to your title.

Trainee Programmer
  • 171
  • 1
  • 3
  • 18
2

the bellow function works for me, hope this helps you too

func setCharacterSpacig(string:String) -> NSMutableAttributedString {

    let attributedStr = NSMutableAttributedString(string: string)
    attributedStr.addAttribute(NSKernAttributeName, value: 1.25, range: NSMakeRange(0, attributedStr.length))
    return attributedStr
}
Patel Jigar
  • 2,141
  • 1
  • 23
  • 30