Мой блог уже упоминался здесь как ответ на вопросы. Я не могу связаться с одним из них, потому что эта форма утверждает, что я спамер. Вздох. Во всяком случае, теперь я хочу написать окончательный пост в блоге о рисовании повернутого текста, так что он также может быть использован для ответов здесь (хех). Вот моя первая попытка:
http://www.platinumball.net/blog/2009/06/01/drawing-nsstrings-in-unusual-rotations/
Это работает хорошо, он делает все, что я хочу, за исключением за то, что он использует CGContextSelectFont (), который ограничивает вывод текста в MacRoman. Это Сукк.
Я уже почти год ищу ответ на эту проблему, включая поиск по этому сайту несколько раз, но безуспешно. Я видел примеры, которые кажутся близкими к тому, что я хочу, но, видимо, я слишком глуп, чтобы подчинить их своей воле. Я включаю основной метод из категории NSString, которую я написал, которая показывает все, что я делаю. Если вам нужно увидеть остальную часть кода, вы можете скачать его по ссылке на мой блог, который я дал выше. Спасибо ...
-(void)drawAtPoint:(CGPoint)point withFont:(UIFont*)font
orientation:(WBOrientation)orient
{
CGContextRef ctxt = [self contextSave];
const std::string tbuf = toStdString(self, NSMacOSRomanStringEncoding);
CGAffineTransform tran = CGAffineTransformMake(1, 0, 0, -1, 0, 0);
switch (orient)
{
case WBOrientUp:
// nothing to do
break;
case WBOrientDown:
tran = CGAffineTransformRotate(tran, degreesToRadians(180.0));
break;
case WBOrientLeft:
tran = CGAffineTransformRotate(tran, degreesToRadians(90.0));
break;
case WBOrientRight:
tran = CGAffineTransformRotate(tran, degreesToRadians(-90.0));
break;
default:
assert(false);
break;
}
contextFont(ctxt, font);
CGContextSetTextDrawingMode(ctxt, kCGTextFill);
CGContextSetTextMatrix(ctxt, tran);
CGContextSetTextPosition(ctxt, point.x, point.y);
CGContextShowText(ctxt, tbuf.c_str(), tbuf.length());
[self contextRestore:ctxt];
}