Frage

Ich habe versucht, Text anzuzeigen, um einen Quarz-Kontext verwenden, aber egal was ich versucht habe, ich habe einfach Glück gehabt, den Text immer angezeigt werden (ich bin in der Lage, alle Arten anzuzeigen andere Quarz obwohl Objekte ). Jeder weiß, was ich tun könnte falsch?

Beispiel:

-(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);
}    
War es hilfreich?

Lösung

Hier ist ein Codefragment, das ich verwende.

UIColor *mainTextColor = [UIColor whiteColor];
[mainTextColor set];
drawTextLjust(@"Sample Text", 8, 50, 185, 18, 16);

Und:

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];
}

Andere Tipps

OK, ich habe es. Zunächst einmal, ändern Sie Ihren Codierungsmodus zu kCGEncodingMacRoman. Zweitens fügen Sie diese Zeile darunter:

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

Damit wird die Umwandlungsmatrix für Text, so dass es richtig gezeichnet wird. Wenn Sie nicht diese Zeile in setzen, wird Ihr Text verkehrt herum hängen und von hinten nach vorne. Keine Ahnung, warum dies war nicht der Standard. Schließlich, stellen Sie sicher, dass Sie die richtige Füllfarbe festgelegt haben. Es ist ein einfacher Fehler zu machen, wenn Sie aus dem Hintergrund Farbe auf die Textfarbe und am Ende mit wissen-auf-Weiß-Text zu ändern vergessen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top