2010-10-22 2 views
8

Легко отобразить одну метку с полностью одним и тем же текстом, но что происходит, когда вы хотите отобразить одно слово жирным шрифтом?Как вы можете смело только одно слово в UILabel?

Пример:

Все ваши базы являются принадлежат нам.

+0

Я думаю, что это то, что вы ищете http://stackoverflow.com/questions/3586871/bold-non-bold-text-in-a-single-uilabel – Abhigyan

ответ

7

UILabel сам по себе не может нарисовать метку с различными атрибутами/шрифтами в тексте. Но Core Text может. Вы можете создать подкласс 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

К сожалению, в настоящее время это невозможно. Однако вы могли бы использовать подкласс UILabel и включать эту функциональность.

Другая возможность - использовать UIWebView, но для этого требуется использовать теги HTML и метод loadHTML :.

1

Как писал Эван Mulawski, UILabel не получите, что вы хотите. В этом случае ни UITextField, ни UITextView.

Другим подходом будет подкласс UIView и написать метод -drawRect:, который делает то, что вы хотите. Вы можете посмотреть на

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

Если вы не будете требовать много разрывов строк и упаковки, то вы, вероятно, могли бы совершить что-то довольно легко.

UIWebView, вероятно, будет быстрее, но, похоже, много накладных расходов для чего-то простого, как стилизованная этикетка.

Смежные вопросы