Yeap.
я думаю, что Вы ищете что-то вроде этого: http://commons.apache.org/cli
библиотека Apache Commons CLI обеспечивает API для обработки интерфейсов командной строки.
Я без проблем использовал следующий код, чтобы нарисовать текст непосредственно в контексте 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]];
Эй, я только что нашел заметку в своем коде.
Очевидно CGContextShowTextAtPoint
не работает с CGContextSetFont
.
Вместо этого вам нужно использовать CGContextSelectFont
. Очевидно, да?
В любом случае, я знаю, что это не так, но вы можете попробовать использовать CGContextShowTextAtPoint
.
Это, вероятно, не входило в отдельный ответ.
Другие люди ( здесь и здесь ) выполнили некоторые аффинные преобразования и использовали метод 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);
Эй, может быть проблема с кодировкой.
Попробуйте изменить kCGEncodingFontSpecific
на kCGEncodingMacRoman
.
Позже, когда все заработает,
Это мусор, не в Юникоде, и для использования версий глифов вам понадобится
вызывать запрещенные API. Для рисования текста лучше использовать UIKit.
Это юникод, а также достойная замена символов для символов
которых нет в вашем шрифте.
Есть еще одна возможность, которая заключается в том, что указанная вами позиция текста находится вне прямоугольника, в котором вы пытаетесь рисовать. Это легко проверить, заменив
CGContextSetTextPosition( oContex, 100, 100 );
на
CGContextSetTextPosition( oContex, CGRectGetMidX(i_poRect), CGRectGetMidY(i_poRect));