2017-12-30 37 views
0

ich diesen Code bin mit:Zeichnen zentriert Text mit Core-Grafik (Mobilgerät)

CGRect screenRect = [[UIScreen mainScreen] bounds]; 
CGFloat screenWidth = screenRect.size.width; 
CGFloat screenHeight = screenRect.size.height; 
NSString * text = @"text"; 
CGContextSetFillColorWithColor(context, [UIColor colorWithRed:1 green:1 blue:1 alpha:RETICLE_ALPHA].CGColor); 
[text drawAtPoint:CGPointMake(screenWidth/2, screenHeight/2) withFont: [UIFont systemFontOfSize:22.0]]; 

eine zentrierte "Text" für iOS zu erstellen.

Aber ich bin mir nicht sicher, wie man den obigen Code bearbeitet, um die Center-Ausrichtung wirklich funktionieren zu lassen, denn bis jetzt ist der Text überhaupt nicht zentriert.

Sorry, für die Art von blöde Frage, aber ich habe kein funktionierendes Beispiel für das Problem gefunden & Ich bin neu in der Verwendung von Core Graphics.

+1

By the way, wie ich in meiner Antwort darauf hin, [eine damit verbundene Frage] (https://stackoverflow.com/a/48035791/1271826), (a) Sie sollten nicht verwenden 'drawAtPoint: withFont : ', sondern' drawAtPoint: withAttributes: '; und (b) Sie sollten die Schriftfarbe im 'attributes'-Wörterbuch angeben, nicht in der CoreGraphics-API. – Rob

Antwort

2

Ihr Text ist nicht zentriert, weil Sie die Textbreite von der Bildschirmgröße subtrahieren müssen und dann müssen Sie durch 2 teilen. Unten habe ich versucht, Ihren Code zu korrigieren.

CGRect screenRect = [[UIScreen mainScreen] bounds]; 
CGFloat screenWidth = screenRect.size.width; 
CGFloat screenHeight = screenRect.size.height; 
NSString * text = @"text"; 

CGFloat minHeight = 40; 
float widthIs = [text boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, minHeight) options:NSStringDrawingUsesLineFragmentOrigin 
attributes:@{ NSFontAttributeName:[UIFont systemFontOfSize:22.0] } 
context:nil].size.width; 
CGContextSetFillColorWithColor(context, [UIColor colorWithRed:1 green:1 blue:1 alpha:1].CGColor); 
[text drawAtPoint:CGPointMake((screenWidth - widthIs)/2, (screenHeight - minHeight)/2) withFont: [UIFont systemFontOfSize:22.0]];