2012-03-28 10 views
1

iOS5でうまく動作する次のコードがあります。CoreGraphicsの勾配がiOS4に表示されない

//// 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やすべてを使用してもエラーは表示されませんが、グレーのグラデーションが描画されます。すべてのアイデア?

答えて

2

これで、何らかの理由で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}; 
+0

これはARC-on-ios4の問題です。配列を作成する前に変数に標準の色を割り当てていれば、それも機能します。 – jrturton

+0

私はARCをまったく使用していませんでした! –

+0

私もこの問題を見る...黒と灰色 –

関連する問題