user1681004
user1681004

Reputation: 117

How to change letter spacing in Swift?

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.

Upvotes: 8

Views: 10349

Answers (3)

Quintus_2
Quintus_2

Reputation: 121

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)

Upvotes: 7

Patel Jigar
Patel Jigar

Reputation: 2151

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
}

Upvotes: 2

Trainee Programmer
Trainee Programmer

Reputation: 171

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.

Upvotes: 3

Related Questions