Search code examples
ioscocoa-touchtextuilabelunderline

How to make an underlined text in UILabel?


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?


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