Градиент CoreGraphics не отображается на iOS4 - PullRequest
1 голос
/ 28 марта 2012

У меня есть следующий код, который отлично работает на iOS5.

 //// Abstracted Graphic Attributes
NSString* textContent = [NSString stringWithFormat:@"%i",[myAnnotation.annotations count]];

//// General Declarations
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef context = UIGraphicsGetCurrentContext();

//// Gradient Declarations
NSArray* gradient3Colors = [NSArray arrayWithObjects: 
                            (id)[UIColor lightGrayColor].CGColor, 
                            (id)[UIColor darkGrayColor].CGColor, nil];
CGFloat gradient3Locations[] = {0, 1};
CGGradientRef gradient3 = CGGradientCreateWithColors(colorSpace, (CFArrayRef)gradient3Colors, gradient3Locations);


//// Oval Drawing
UIBezierPath* ovalPath = [UIBezierPath bezierPathWithOvalInRect: CGRectMake(0.5, 0.5, 34, 34)];
CGContextSaveGState(context);
[ovalPath addClip];
CGContextDrawRadialGradient(context, gradient3,
                            CGPointMake(17.5, 17.5), 10,
                            CGPointMake(17.5, 17.5), 30,
                            kCGGradientDrawsBeforeStartLocation | kCGGradientDrawsAfterEndLocation);
CGContextRestoreGState(context);

[[UIColor blackColor] setStroke];
ovalPath.lineWidth = 0.5;
[ovalPath stroke];


//// Text Drawing
CGRect textFrame = CGRectMake(0, 7.0, 35, 20);
[[UIColor whiteColor] setFill];
[textContent drawInRect: textFrame withFont: [UIFont fontWithName: @"HelveticaNeue" size: [UIFont systemFontSize]] lineBreakMode: UILineBreakModeWordWrap alignment: UITextAlignmentCenter];

//// Cleanup
CGGradientRelease(gradient3);
CGColorSpaceRelease(colorSpace);   

Это рисует круг с серым градиентом, в середине это число.На iOS5 это показывает правильно.На iOS4 это не выдает ошибку и не предупреждает меня об использовании неправильных API и всего, кроме серого градиента!Есть идеи?

1 Ответ

2 голосов
/ 29 марта 2012

ОК, iOS4 почему-то не понравились определенные цвета.

Используя следующее исправление.

UIColor* myLightGrey = [UIColor colorWithRed: 0.66 green: 0.66 blue: 0.66 alpha: 1];
UIColor* myDarkGrey = [UIColor colorWithRed: 0.33 green: 0.33 blue: 0.33 alpha: 1];

//// Gradient Declarations
NSArray* gradient3Colors = [NSArray arrayWithObjects: 
                            (id)myLightGrey.CGColor, 
                            (id)myDarkGrey.CGColor, nil];
CGFloat gradient3Locations[] = {0, 1};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...