17

Howto set different font size and color in a UILabel with Swift?

I need to color the first char of the string with different color and size than the rest of the string.

rmaddy
  • 314,917
  • 42
  • 532
  • 579
lifeisfoo
  • 15,478
  • 6
  • 74
  • 115

1 Answers1

53

Suppose you want to have a smaller and gray currency symbol like this:

enter image description here

Just use a NSMutableAttributedString object:

let amountText = NSMutableAttributedString.init(string: "€ 60,00")

// set the custom font and color for the 0,1 range in string
amountText.setAttributes([NSFontAttributeName: UIFont.systemFontOfSize(12), 
                              NSForegroundColorAttributeName: UIColor.grayColor()],
                         range: NSMakeRange(0, 1))
// if you want, you can add more attributes for different ranges calling .setAttributes many times

// set the attributed string to the UILabel object
myUILabel.attributedText = amountText

Swift 5.3:

let amountText = NSMutableAttributedString.init(string: "€ 60,00")

// set the custom font and color for the 0,1 range in string
amountText.setAttributes([NSAttributedString.Key.font: UIFont.systemFont(ofSize: 12),
                              NSAttributedString.Key.foregroundColor: UIColor.gray],
                             range: NSMakeRange(0, 1))
// if you want, you can add more attributes for different ranges calling .setAttributes many times
// set the attributed string to the UILabel object

// set the attributed string to the UILabel object
myUILabel.attributedText = amountText
lifeisfoo
  • 15,478
  • 6
  • 74
  • 115