Can I set the attributedText
property of a UILabel
object? I tried the below code:
UILabel *label = [[UILabel alloc] init]; label.attributedText = @"asdf";
But it gives this error:
Property "attributedText" not found on object of type 'UILabel *'
#import <CoreText/CoreText.h>
not working
The styled text that the text view displays.
A view that displays one or more lines of informational text.
Here is a complete example of how to use an attributed text on a label:
NSString *redText = @"red text"; NSString *greenText = @"green text"; NSString *purpleBoldText = @"purple bold text"; NSString *text = [NSString stringWithFormat:@"Here are %@, %@ and %@", redText, greenText, purpleBoldText]; // If attributed text is supported (iOS6+) if ([self.label respondsToSelector:@selector(setAttributedText:)]) { // Define general attributes for the entire text NSDictionary *attribs = @{ NSForegroundColorAttributeName: self.label.textColor, NSFontAttributeName: self.label.font }; NSMutableAttributedString *attributedText = [[NSMutableAttributedString alloc] initWithString:text attributes:attribs]; // Red text attributes UIColor *redColor = [UIColor redColor]; NSRange redTextRange = [text rangeOfString:redText];// * Notice that usage of rangeOfString in this case may cause some bugs - I use it here only for demonstration [attributedText setAttributes:@{NSForegroundColorAttributeName:redColor} range:redTextRange]; // Green text attributes UIColor *greenColor = [UIColor greenColor]; NSRange greenTextRange = [text rangeOfString:greenText];// * Notice that usage of rangeOfString in this case may cause some bugs - I use it here only for demonstration [attributedText setAttributes:@{NSForegroundColorAttributeName:greenColor} range:greenTextRange]; // Purple and bold text attributes UIColor *purpleColor = [UIColor purpleColor]; UIFont *boldFont = [UIFont boldSystemFontOfSize:self.label.font.pointSize]; NSRange purpleBoldTextRange = [text rangeOfString:purpleBoldText];// * Notice that usage of rangeOfString in this case may cause some bugs - I use it here only for demonstration [attributedText setAttributes:@{NSForegroundColorAttributeName:purpleColor, NSFontAttributeName:boldFont} range:purpleBoldTextRange]; self.label.attributedText = attributedText; } // If attributed text is NOT supported (iOS5-) else { self.label.text = text; }
Unfortunately, You can use OHAttributedLabel instead.UILabel
doesn't support attributed strings.
Update: Since iOS6, UILabel
does support attributed strings. See UILabel reference or Michael Kessler's answer below for more details.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With