How can you bold just one word in a UILabel?

后端 未结 3 978
忘了有多久
忘了有多久 2021-02-15 16:09

It\'s easy to display a single label with entirely the same text but what happens when you want to display one word in bold?

Example:

All your bases are<

相关标签:
3条回答
  • 2021-02-15 16:36

    Unfortunately, this is currently not possible. You could, however, subclass UILabel and include this functionality.

    Another possibility would be using a UIWebView, but this requires using HTML tags and the loadHTML: method.

    0 讨论(0)
  • 2021-02-15 16:54

    UILabel itself cannot draw a label with different attributes/fonts within the text. But Core Text can. You can create a subclass of UILabel that wraps an attributed string and uses Core Text to draw it. You can handle the drawing as in this sample code from the Core Text programming guide:

    // Build up your attributed string, then...
    CTLineRef line = CTLineCreateWithAttributedString(attrString);
    
    // Set text position and draw the line into the graphics context
    CGContextSetTextPosition(context, 10.0, 10.0);
    CTLineDraw(line, context);
    CFRelease(line);
    
    0 讨论(0)
  • 2021-02-15 16:59

    As Evan Mulawski wrote, UILabel won't get you what you want. For that matter, neither will UITextField nor UITextView.

    Another approach would be to subclass UIView and write a -drawRect: method that does what you want. You might look at

    • CGContextShowTextAtPoint
    • [NSString drawAtPoint:withFont:]
    • [NSString sizeWithFont:]

    If you won't be requiring a lot of line breaks and wrapping, then you could probably craft something fairly easily.

    UIWebView would probably be faster but it seems like a lot of overhead for something as simple as a styled label.

    0 讨论(0)
提交回复
热议问题