iPhone: как нарисовать текст в окне?

Yeap.

я думаю, что Вы ищете что-то вроде этого: http://commons.apache.org/cli

библиотека Apache Commons CLI обеспечивает API для обработки интерфейсов командной строки.

5
задан don 17 January 2013 в 22:32
поделиться

5 ответов

Я без проблем использовал следующий код, чтобы нарисовать текст непосредственно в контексте Quartz:

CGContextSetStrokeColorWithColor(context, strokeColor); 
CGContextSetFillColorWithColor(context, strokeColor);

CGContextSelectFont(context, "Helvetica", fontSize, kCGEncodingMacRoman);
CGContextSetTextDrawingMode(context, kCGTextFill);
CGContextSetTextPosition(context, 0.0f, round(fontSize / 4.0f));
CGContextShowText(context, [text UTF8String], strlen([text UTF8String]));

Не очевидно, что в вашем случае идет не так. В этом случае следует учитывать две вещи: текст может отображаться в перевернутом виде из-за перевернутого координатного пространства UIViews и их CALayers, и, как указывает Rhythmic Fistman, это не обрабатывает кодировки UTF.

A Лучше, хотя и менее производительно, сделать что-то вроде:

CGContextSetFillColorWithColor(context, strokeColor);
[text drawAtPoint:CGPointMake(0.0f, 0.0f) withFont:[UIFont fontWithName:@"Helvetica" size:fontSize]];
5
ответ дан 13 December 2019 в 05:40
поделиться

Эй, я только что нашел заметку в своем коде.

Очевидно CGContextShowTextAtPoint не работает с CGContextSetFont .
Вместо этого вам нужно использовать CGContextSelectFont . Очевидно, да?

В любом случае, я знаю, что это не так, но вы можете попробовать использовать CGContextShowTextAtPoint .

Это, вероятно, не входило в отдельный ответ.

3
ответ дан 13 December 2019 в 05:40
поделиться

Другие люди ( здесь и здесь ) выполнили некоторые аффинные преобразования и использовали метод CGContextShowTextAtPoint , чтобы заставить его работать:

CGContextSelectFont(oContex, @"Monaco", 10, kCGEncodingFontSpecific);
CGContextSetTextDrawingMode(oContex, kCGTextFill);
CGContextSetRGBFillColor(oContex, 1.0, 0.0, 0.0, 1.0);
CGAffineTransform xform = CGAffineTransformMake(1.0, 0.0, 0.0, -1.0, 0.0, 0.0);
CGContextSetTextMatrix(oContex, xform);
CGContextShowTextAtPoint(oContex, 100, 100, "abc", 3);

One Другая возможная проблема заключается в том, что метод CGContextSetRGBFillColor принимает аргументы с плавающей запятой в диапазоне от 0,0 до 1,0. Вы используете 255 для обозначения «полного цвета», что не соответствует ожиданиям этого метода. Следующее должно работать, если вам удобнее использовать диапазон от 0 до 255:

CGContextSetRGBFillColor(oContex, 255/255.0, 0/255.0, 0/255.0, 1.0);
1
ответ дан 13 December 2019 в 05:40
поделиться

Эй, может быть проблема с кодировкой.

Попробуйте изменить kCGEncodingFontSpecific на kCGEncodingMacRoman .

Позже, когда все заработает, Это мусор, не в Юникоде, и для использования версий глифов вам понадобится
вызывать запрещенные API. Для рисования текста лучше использовать UIKit.
Это юникод, а также достойная замена символов для символов
которых нет в вашем шрифте.

1
ответ дан 13 December 2019 в 05:40
поделиться

Есть еще одна возможность, которая заключается в том, что указанная вами позиция текста находится вне прямоугольника, в котором вы пытаетесь рисовать. Это легко проверить, заменив

CGContextSetTextPosition( oContex, 100, 100 );

на

CGContextSetTextPosition( oContex, CGRectGetMidX(i_poRect), CGRectGetMidY(i_poRect));
1
ответ дан 13 December 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: