iPhone - нарисуйте белый текст на черном фоне, используя CGContext - PullRequest
2 голосов
/ 31 августа 2011

Я не могу добиться рисования белого текста на черном виде с помощью CGContext в методе drawRect.

Я делаю:

CGContextRef context = UIGraphicsGetCurrentContext();

CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextSetLineWidth(context, 1.0);
CGContextSelectFont(context, "Helvetica", 20, kCGEncodingMacRoman);
CGContextSetTextDrawingMode(context, kCGTextFill);

CGPoint center = self.center;

А потом ...
Невозможночтобы найти правильный метод.
Я пробовал это:

UIFont* font = [UIFont fontWithName:@"Geneva" size:12.0];
[@"Some text" drawAtPoint:center withFont:font];

Но это не работает.

Я не нашел никакого метода CGContext для этого.Где он спрятан?

Как мне нарисовать этот текст белым?

Ответы [ 5 ]

4 голосов
/ 20 декабря 2012

Хорошо, через пару часов и прочитав руководство по программированию Quartz 2D, я обнаружил, что вам также нужно установить цвет FILL, а не только цвет STROKE.Так что следующий код работает.

CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor);
CGContextSetFillColorWithColor(context, [UIColor whiteColor].CGColor);

Мне нужно было показать метки диаграммы на границе darkGray.Теперь метки отображаются белым цветом.

2 голосов
/ 31 августа 2011

Это нарисует белую строку в черном прямоугольнике

NSString *text = @"Some text";
CGPoint center = CGPointMake(100, 200);
UIFont *font = [UIFont systemFontOfSize:14];

CGSize stringSize = [text sizeWithFont:font];
CGRect stringRect = CGRectMake(center.x-stringSize.width/2, center.y-stringSize.height/2, stringSize.width, stringSize.height);

[[UIColor blackColor] set];
CGContextFillRect(context, stringRect);

[[UIColor whiteColor] set];
[text drawInRect:stringRect withFont:font];
1 голос
/ 31 августа 2011

В более коротком примере попробуйте использовать [[UIColor whiteColor] set] перед вызовом drawAtPoint:.

0 голосов
/ 13 апреля 2018

Это будет работать с этим кодом:

NSString *text = @"Some text";
UIFont *font = [UIFont systemFontOfSize:14];

[ text drawAtPoint:CGPointMake( 0, 0 ) withAttributes:@{ NSFontAttributeName:font, NSForegroundColorAttributeName : UIColor.redColor } ];
0 голосов
/ 31 августа 2011

Работает с:

CGContextShowTextAtPoint (context, center.x, center.y, "Some text", strlen("Some text")); 

Но все же нужно, чтобы некоторые преобразования отображались без отражения: -)

...