2008-09-27 23 views
7

Próbowałem wyświetlać tekst w kontekście kwarcowym, ale bez względu na to, co próbowałem, po prostu nie miałem szczęścia, aby uzyskać tekst do wyświetlenia (mimo to jestem w stanie wyświetlić wszystkie inne obiekty z kwarcu) . Czy ktoś wie, co robię źle?Jak wyświetlać tekst za pomocą Quartz na iPhonie?

przykład:

-(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); 
}  

Odpowiedz

7

Oto fragment kodu, który używam.

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

I:

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

Powinien to być "Przykładowy tekst", ponieważ funkcja oczekuje NSString *. To działa dla mnie inaczej, dzięki. Jednak nie mogę znaleźć odwołania do funkcji drawAtPoint, co jest niepokojące. – CiscoIPPhone

+1

drawAtPoint jest częścią kategorii UIKit NSString - http://developer.apple.com/library/ios/#documentation/uikit/reference/NSString_UIKit_Additions/Reference/Reference.html – Hunter

9

OK, rozumiem. Po pierwsze, zmień tryb kodowania na kCGEncodingMacRoman. Po drugie, włożyć tej linii pod spodem:

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

Ustawia macierzy konwersji tekstu, aby przy wyciąganiu poprawnie. Jeśli nie umieścisz tej linii, tekst będzie odwrócony do góry i do przodu. Nie mam pojęcia, dlaczego nie było to domyślne. Na koniec upewnij się, że ustawiłeś właściwy kolor wypełnienia. Łatwo jest popełnić błąd, jeśli zapomnisz zmienić kolor tła na kolor tekstu i skończysz z tekstem białą na białą.

+1

Nie jest to ustawienie domyślne, ponieważ ta funkcja - i wszystkie Mechanizm kwarcowy - działa dokładnie tak samo w systemie iOS, jak w OS X, pod kątem przenośności, ale z jakiegoś powodu odwrócił domyślny systemowy układ współrzędnych na iOS. Na komputerze Mac (0, 0) znajduje się po lewej stronie, a system iOS w lewym górnym rogu. Jeśli przenosisz kod Mac, wystarczy odwrócić i zmienić położenie układu współrzędnych, zanim zrobisz cały kod, zamiast myśleć o nim dla każdego prymitywu. – Tommy

Powiązane problemy