Domanda

Ho provato a visualizzare il testo usando un contesto Quartz, ma non importa quello che ho provato non ho avuto fortuna a far visualizzare il testo (sono in grado di visualizzare tutti i tipi di altri oggetti Quartz però ). Qualcuno sa cosa potrei fare di sbagliato?

Esempio:

-(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);
}    
È stato utile?

Soluzione

Ecco un frammento di codice che sto 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];
}

Altri suggerimenti

OK, ho capito. Prima di tutto, modifica la modalità di codifica in kCGEncodingMacRoman. In secondo luogo, inserisci questa riga sotto di essa:

CGContextSetTextMatrix(canvas, CGAffineTransformMake(1, 0, 0, -1, 0, 0));

Questo imposta la matrice di conversione per il testo in modo che sia disegnato correttamente. Se non inserisci questa linea, il testo sarà capovolto e viceversa. Non ho idea del perché questo non fosse il valore predefinito. Infine, assicurati di aver impostato il colore di riempimento giusto. È un errore facile da fare se si dimentica di passare dal colore di sfondo al colore del testo e si finisce con il testo bianco su bianco.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top