Сглаживание шрифтов / сглаживание при использовании Quartz2d на iOS? - PullRequest
1 голос
/ 03 марта 2011

У меня есть пользовательский UIView, который генерирует какую-то диаграмму, которой нужна высота, обозначенная цифрой.

Все рисование идет нормально, оно корректно сглаживается при создании кругов и т. Д. С помощью quartz2d.
Однако, когда я хочу нарисовать строку NSString в контексте, сглаживание шрифтов / сглаживание нарушается.
Отключение сглаживания приводит к более тонкому тексту, поэтому переключатель работает, однако сглаженный текст не работает. Он не выглядит таким четким, как обычный текст, отображаемый в iOS.

CGContextSetAllowsAntialiasing(context, YES);
CGContextSetShouldAntialias(context, YES); 
CGContextSetShouldSmoothFonts(context, YES);
NSString *stringValue = [NSString stringWithFormat:@"%d", input.height];
UIFont *font = [UIFont  systemFontOfSize:textsize]; 

[stringValue drawAtPoint:CGPointMake(x, y) withFont:font];

Я не знаю, как решить эту проблему с отображением шрифтов. Есть идеи?

Ответы [ 2 ]

3 голосов
/ 28 июня 2011

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

GCContextSaveGState(context);

Отключите сглаживание и визуализируйте текст:

GCContextSetShouldAntialias(context, NO);
NSString *stringValue = [NSString stringWithFormat:@"%d", input.height];
UIFont *font = [UIFont systemFontOfSize:textSize];

[stringValue drawAtPoint:CGPointMake(x, y) withFont:font];

Затем верните графический контекст в прежнее пространство.(с включенным сглаживанием) для визуализации оставшихся частей чертежа.

CGContextRestoreGState(context);
2 голосов
/ 09 января 2012

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

...