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やすべてを使用してもエラーは表示されませんが、グレーのグラデーションが描画されます。すべてのアイデア?
これはARC-on-ios4の問題です。配列を作成する前に変数に標準の色を割り当てていれば、それも機能します。 – jrturton
私はARCをまったく使用していませんでした! –
私もこの問題を見る...黒と灰色 –