Como para exibir o texto usando Quartz no iPhone?
-
02-07-2019 - |
Pergunta
Eu tenho tentado texto de exibição usando um contexto de quartzo, mas não importa o que eu tentei eu simplesmente não tive sorte para conseguir o texto para display (eu sou capaz de exibir todos os tipos de outros Quartz objetos embora ). Qualquer um sabe o que eu poderia estar fazendo errado?
exemplo:
-(void)drawRect:(CGRect)rect
{
// Drawing code
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSelectFont(context, "Arial", 24, kCGEncodingFontSpecific);
CGContextSetTextPosition(context,80,80);
CGContextShowText(context, "hello", 6);
//not even this works
CGContextShowTextAtPoint(context, 1,1, "hello", 6);
}
Solução
Aqui está um fragmento de código que estou usando.
UIColor *mainTextColor = [UIColor whiteColor];
[mainTextColor set];
drawTextLjust(@"Sample Text", 8, 50, 185, 18, 16);
E:
static void drawTextLjust(NSString* text, CGFloat y, CGFloat left, CGFloat right,
int maxFontSize, int minFontSize) {
CGPoint point = CGPointMake(left, y);
UIFont *font = [UIFont systemFontOfSize:maxFontSize];
[text drawAtPoint:point forWidth:right - left withFont:font
minFontSize:minFontSize actualFontSize:NULL
lineBreakMode:UILineBreakModeTailTruncation
baselineAdjustment:UIBaselineAdjustmentAlignBaselines];
}
Outras dicas
OK, eu entendi. Primeiro, mudar o seu modo de codificação para kCGEncodingMacRoman. Em segundo lugar, insira esta linha debaixo dela:
CGContextSetTextMatrix(canvas, CGAffineTransformMake(1, 0, 0, -1, 0, 0));
Isto define a matriz de conversão de texto para que ele é desenhado corretamente. Se você não colocar essa linha no, seu texto será cabeça para baixo e de trás para frente. Não faço ideia por que isso não era o padrão. Finalmente, certifique-se que você definir a cor de preenchimento direita. É um erro fácil de fazer se você esquecer de mudar de cor pano de fundo para a cor do texto e acabar com texto branco sobre branco.