Как нарисовать NSString с определенной высотой на идеально совпадающем растровом изображении?

У меня есть NSString, например @"Hello World", и я хочу преобразовать его в растровое изображение с высотой ровно 20 пикселей. Ширина растрового изображения должна соответствовать ширине текста.

Я знаю, что есть некоторые дополнения NSString UIKit, которые могут рисовать текст, но я не знаю, как нарисовать текст с ограничивающей рамкой высотой ровно 20 пикселей (текст идеально вписывается в эту высоту) в растровое изображение, которое имеет идеальный размер для нести текст?

Есть простой способ сделать это?

Это также должно работать с буквами китайского, японского, русского и арабского стиля. Может быть, я мог бы просто поместить текст в UILabel, а затем каким-то образом получить его растровое изображение. Но растровое изображение содержимого UILabel будет либо слишком коротким, либо слишком длинным по ширине.

Может быть, я должен сначала спросить сам текст, насколько он будет большим при определенном размере шрифта (= высоте?), А затем вручную создать растровое изображение с точными необходимыми размерами и нарисовать текст на этом растровом изображении?


person openfrog    schedule 23.09.2010    source источник
comment
ТАК, не по теме, но: интересно, почему люди могут добавить вопрос в избранное, не голосуя за него ?! Если это хорошо, почему бы не проголосовать автоматически при добавлении в избранное? Без разницы.   -  person openfrog    schedule 23.09.2010
comment
openfrog: это два не связанных между собой действия. Они, вероятно, будут совпадать в 90% случаев, но никогда не следует, чтобы одна кнопка выполняла две разные вещи. (По крайней мере, не без префикса «проголосуйте за любой вопрос, который мне нравится».)   -  person Peter Hosey    schedule 23.09.2010
comment
Тогда SO должен автоматически спросить, если еще не проголосовал: Также проголосовать? ДА / НЕТ;) ... Я просто считаю эгоизмом ставить в избранное отличный вопрос, но в то же время не поддерживать его голосованием.   -  person openfrog    schedule 25.09.2010


Ответы (1)


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

После того, как вы нарисовали нужный текст, вы можете использовать это, чтобы получить графическое представление вида.

person Community    schedule 23.09.2010
comment
Спасибо, Грэм, выглядит хорошо. Но это не решает проблему точного растрового изображения. Если я просто нарисую его в DrawRect: UIView, я должен заранее угадать необходимый фрейм, а затем нарисовать текст именно там, где ширина не имеет значения. Только высота имеет значение и должна быть 20 пикселей. - person openfrog; 23.09.2010