你怎么能在UILabel中只用一个词呢?

时间:2010-10-22 15:09:00

标签: iphone

使用完全相同的文字显示单个标签很容易,但是当您想要以粗体显示一个单词时会发生什么?

示例:

的所有依据属于我们。

3 个答案:

答案 0 :(得分:7)

UILabel本身无法在文本中绘制具有不同属性/字体的标签。但核心文本可以。您可以创建一个UILabel的子类,它包装一个属性字符串并使用Core Text来绘制它。您可以从核心文本编程指南中的this sample code处理绘图:

// 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);

答案 1 :(得分:1)

不幸的是,目前这是不可能的。但是,您可以将UILabel子类化并包含此功能。

另一种可能性是使用UIWebView,但这需要使用HTML标记和loadHTML:方法。

答案 2 :(得分:1)

正如Evan Mulawski写的那样,UILabel不会得到你想要的东西。就此而言,UITextField和UITextView都不会。

另一种方法是将UIView子类化并编写一个-drawRect:方法来完成你想要的任务。你可以看一下

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

如果你不需要大量的换行和包装,那么你可以很容易地制作一些东西。

UIWebView可能会更快,但对于像样式标签这样简单的东西来说似乎有很多开销。