Как да нарисувате 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)


Начинът, по който ми казаха да го направя за Cocoa на този въпрос работи и въпреки преждевременната оптимизация, част от мозъка ми се колебае, не е твърде бавен.

След като начертаете текста по ваше удовлетворение, можете да използвате това метод за получаване на изображение на изгледа.

person Community    schedule 23.09.2010
comment
Благодаря Греъм, изглежда добре. Но това не решава проблема с точното растерно изображение. Ако просто го начертая в drawRect на UIView:, трябва предварително да отгатна необходимата рамка и след това да начертая текста точно там, където ширината няма значение. Само височината има значение и трябва да е 20 пиксела. - person openfrog; 23.09.2010