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.
How can I color part of the text?
2
Answers
NSLocalizedString(@"welcome_message", nil)
returns aNSString
.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:
Put that new value in your strings file.
If you use HTML, there is a built-in init method for that.
See related question: Convert HTML to NSAttributedString in iOS
For the other ones, you can either use a third party lib parser, or parse them yourself. You can use
NSRegularExpression
,NSScanner
, etc… and then apply the target effect to the correct range.