How to make an underlined text in UILabel?

cocoa-touch, ios, text, uilabel, underline

Solution

Objective-C

iOS 6.0 > version

`UILabel` supports `NSAttributedString`

NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:@"Hello Good Morning"];
[attributeString addAttribute:NSUnderlineStyleAttributeName
                        value:[NSNumber numberWithInt:1]
                        range:(NSRange){0,[attributeString length]}];

Swift

let attributeString: NSMutableAttributedString =  NSMutableAttributedString(string: "Hello Good Morning")
attributeString.addAttribute(NSUnderlineStyleAttributeName, value: 1, range: NSMakeRange(0, attributeString.length))

Definition :

- (void)addAttribute:(NSString *)name value:(id)value range:(NSRange)aRange

`Parameters List:`

name : A string specifying the attribute name. Attribute keys can be supplied by another framework or can be custom ones you define. For information about where to find the system-supplied attribute keys, see the overview section in NSAttributedString Class Reference.

value : The attribute value associated with name.

aRange : The range of characters to which the specified attribute/value pair applies.

Now use like this:

yourLabel.attributedText = [attributeString copy];

iOS 5.1.1 < version

You needs `3 party attributed Label` to display `attributed text`:

1) Refer TTTAttributedLabel link. Its best third party `attributed` `Label` to `display` attributed `text`.

2) refer OHAttributedLabel for third party `attributed` `Label`

Problem

How can I make an underlined text in `UILabel`? I had tried by making a `UILabel` with height 0.5f and place it under the text. This line label is not visible when I am running my app in iPhone 4.3 and iPhone 4.3 simulator, but it is visible in iPhone 5.0 simulator onwards. Why? How can I do this?

Original source

Related problems