Home > Software design >  How can I change color of part of the text in a NSLocalizedString with Objective C?
How can I change color of part of the text in a NSLocalizedString with Objective C?

Time:09-16

Here is my problem. I have a ViewController in which there is a label with a text and I want to change the color of some of the words in that sentence. The string is an NSLocalizedString which is written in different languages and changes based on the user system language.

    self.welcomeMessageLabel.text = NSLocalizedString(@"welcome_message", nil);

This is the result that I want to achieve. enter image description here

How can I color part of the text?

CodePudding user response:

NSLocalizedString(@"welcome_message", nil) returns a NSString.

Let's clarify, it's just a "suite of characters", there is no notion of bold/colors, italic, offsets, etc.

And to show different characters with different rendering (colors, boldness, etc.) you need to use NSAttributedString

Since it's only a suite of characters, you need to find which elements need to have a different rendering. To do so, you can use tags, like HTML, Markdown, BBCode tags.

Sample for the part, and I'll simplify focusing only in bold:

//Initial text
...un link all'indirizzo...
// With BBCode tag
...un [b]link[/b] all'indirizzo...
// With HTML tag
...un <b>link</b> all'indirizzo...
// With Markdown tag
...un **link** all'indirizzo...
// With custom tag
...un {link} all'indirizzo...

Put that new value in your strings file.

If you use HTML, there is a built-in init method for that.
See related question: enter image description here

  • Related