Ich habe bereits viel gesucht und konnte keine Antwort finden.
Ich habe ein normales UILabel, das folgendermaßen definiert ist:
UILabel *totalColors = [[[UILabel alloc] initWithFrame:CGRectMake(5, 7, 120, 69)] autorelease];
totalColors.text = [NSString stringWithFormat:@"%d", total];
totalColors.font = [UIFont fontWithName="Arial-BoldMT" size=60];
totalColors.textColor = [UIColor colorWithRed=221/255.0 green=221/255.0 blue=221/255.0 alpha=1.0];
totalColors.backgroundColor = [UIColor clearColor];
[self addSubview=totalColors];
Und ich wollte den horizontalen Abstand zwischen den Buchstaben enger machen, während die Schriftgröße beibehalten wird.
Gibt es eine Möglichkeit, das zu tun? Es sollte eine ziemlich einfache Sache sein.
Prost Leute, Andre
UPDATE:
Also musste ich es so machen:
- (void) drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSelectFont (context, "Arial-BoldMT", 60, kCGEncodingMacRoman);
CGContextSetCharacterSpacing (context, -10);
CGContextSetTextDrawingMode (context, kCGTextFill);
CGContextSetRGBFillColor(context, 221/255.0, 221/255.0, 221/255.0, 221/255.0);
CGAffineTransform xform = CGAffineTransformMake(1.0, 0.0, 0.0, -1.0, 0.0, 0.0);
CGContextSetTextMatrix(context, xform);
char* result = malloc(17);
sprintf(result, "%d", totalNumber);
CGContextShowTextAtPoint (context, 0, 54, result, strlen(result));
}
Aber ich muss das rechts ausrichten. Ich könnte das manuell tun, wenn ich die Breite des gezeichneten Textes kennen würde, aber es ist fast unmöglich, das zu finden.
Ich habe von ATSU gelesen, aber ich konnte keine Beispiele finden.
Das ist doof :/
0 Stimmen
Möglicher Doppelgänger von stackoverflow.com/questions/1063268/…
0 Stimmen
Ist es also nicht möglich, es ohne die Verwendung von benutzerdefinierten Schriftarten oder ohne die Verwendung von Quartz 2D zu tun?
1 Stimmen
Sie können die Größe des Bereichs, den der Text in einem UILabel einnehmen wird, erhalten, indem Sie die Methode - (CGSize)sizeWithFont:(UIFont *)font minFontSize:(CGFloat)minFontSize actualFontSize:(CGFloat *)actualFontSize forWidth:(CGFloat)width lineBreakMode:(UILineBreakMode)lineBreakMode der NSString-Kategorie UIStringDrawing aufrufen. Dann können Sie diese Größe um den Betrag verringern, um den Sie Ihren Text verkleinert haben, denke ich. Wenn Sie es immer noch benötigen :)
0 Stimmen
Wenn jemand eine Lösung benötigt, schauen Sie hier nach: stackoverflow.com/a/35156265/4173671
0 Stimmen
Überprüfen Sie diese Antwort, um das Kerning (Attribut zum engen Zwischenraum zwischen Zeichen) zur Anpassung an die Breite des Labels zu berechnen.