2010-09-23 1 views
1

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

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

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

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

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

+0

Так, не по теме, но: Интересно, почему люди могут любить вопрос, не голосуя? Если это хорошо, почему бы не проголосовать автоматически, когда это было выгодно? Без разницы. – openfrog

+0

вы спрашивали по мета? – 2010-09-23 11:27:28

+0

openfrog: Это два несвязанных действия. Вероятно, они будут совпадать в 90% случаев, но никогда не нужно, чтобы одна кнопка делала две отдельные вещи. (По крайней мере, не без префикса с надписью «проголосуйте за любой вопрос, который я любил».) –

ответ

3

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

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

+0

Спасибо, Грэм, это выглядит хорошо. Но это не решает проблему точного растрового изображения. Если я просто рисую его в drawRect UIView:, я должен предварительно угадать необходимый кадр, а затем нарисовать текст точно там, где ширина не имеет значения. Только высота важна и должна быть 20 пикселей. – openfrog

+0

@openfrog: обновлено, чтобы включить ссылку для этой части. – 2010-09-23 11:26:56

+0

Это круто, мужик! Благодаря! – openfrog

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