2013-09-19 3 views
3

У меня есть проблема, чтобы сделать текстовый штрих для работы на iOS7 ... Все хорошо работало для iOS4 iOS5 и iOS6, но поскольку я обновил свои устройства для iOS7, я не вижу цвета штриха. Кто-нибудь знает, как это возможно?Почему CGContextSetRGBStrokeColor не работает на ios7?

Вот мой код:

UIGraphicsBeginImageContext(CGSizeMake(scale(line.position.width), scale(line.position.height))); 

CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextSetLineWidth (context, scale(4.0)); //4.0 

CGContextSetLineJoin(context, kCGLineJoinRound); 
CGContextSetBlendMode(context, kCGBlendModeScreen); 
CGContextSetTextDrawingMode(context, kCGTextFillStroke); 
CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0); 
CGContextSetRGBStrokeColor(context, 0.0, 0.0, 0.0, 1.0); 
[label.text drawInRect:label.frame withFont:label.font]; 

self.image = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext(); 

ответ

2

Заметили тот же выраженный регресс с iOS7, который принижает drawInRect withFont API. Использование рекомендуемых ароматов «withAttributes».

NSDictionary *dictionary = [NSDictionary dictionaryWithObjectsAndKeys:largeFont,NSFontAttributeName, [UIColor whiteColor],NSForegroundColorAttributeName,[UIColor blackColor], NSStrokeColorAttributeName,nil]; 

[myString drawAtPoint:myPosition withAttributes:dictionary]; 
+0

Спасибо! Отлично работает! – Matthias

3

Я просто столкнулся с этим. На iOS 7 кажется, что CGContextSetRGBFillColor используется вместо CGContextSetRGBStrokeColor для установки цвета штриха. Похож на ошибку. Это означает, что нельзя использовать CGContextSetTextDrawingMode (context, kCGTextFillStroke); потому что цвет хода будет таким же, как цвет заливки.

Я изменил ваш код на работу, добавив второй вызов drawInRect. Это решение также совместимо с обратной связью, так как оно просто повторно запускает ход дополнительного времени и также должно быть совместимо с переходом, если они исправляют ошибку:

UIGraphicsBeginImageContext(CGSizeMake(scale(line.position.width), scale(line.position.height))); 

CGContextRef context = UIGraphicsGetCurrentContext(); 

CGContextSetLineWidth (context, scale(4.0)); //4.0 

CGContextSetLineJoin(context, kCGLineJoinRound); 
CGContextSetBlendMode(context, kCGBlendModeScreen); 
CGContextSetTextDrawingMode(context, kCGTextFillStroke); 
CGContextSetRGBFillColor(context, 1.0, 1.0, 1.0, 1.0); 
CGContextSetRGBStrokeColor(context, 0.0, 0.0, 0.0, 1.0); 
[label.text drawInRect:label.frame withFont:label.font]; 


//New Code Start 
CGContextSetTextDrawingMode(context, kCGTextStroke); 
CGContextSetRGBFillColor(context, 0.0, 0.0, 0.0, 1.0); 
[label.text drawInRect:label.frame withFont:label.font]; 
//New Code End 

self.image = UIGraphicsGetImageFromCurrentImageContext(); 
     UIGraphicsEndImageContext(); 
Смежные вопросы