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);
}    
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top