iOSアプリでUIの独自のグラデーションを作成する実験を行っています。私は最初にCAGradientLayerを使用しましたが、「階段状」の外観に失望したため、CGGradientを試しています。
- (void)drawRect:(CGRect)rect
{
CGContextRef currentContext = UIGraphicsGetCurrentContext();
CGGradientRef skyGradient;
CGColorSpaceRef rgbColorspace;
size_t num_locations = 3;
CGFloat locations[3] = { 0.0, .5, 1.0 };
CGFloat components[12] = { .106, .73, .93333, 1.,
0.0, 0.0 , 1.0, 1.,
.106, .73, .93333, 1. };
rgbColorspace = CGColorSpaceCreateDeviceRGB();
skyGradient = CGGradientCreateWithColorComponents(rgbColorspace, components, locations, num_locations);
CGRect currentBounds = self.bounds;
CGPoint topLeft = CGPointMake(0.0f, 0.0f);
CGPoint bottomRight = CGPointMake(CGRectGetMaxX(currentBounds), CGRectGetMaxY(currentBounds));
CGContextDrawLinearGradient(currentContext, skyGradient, topLeft, bottomRight, 0);
CGGradientRelease(skyGradient);
CGColorSpaceRelease(rgbColorspace);
}
グラデーションが正しく表示されるという問題があります。私は3台のiPadを持っています—各世代に1台です。グラデーションはiPad3では正しく見えますが、iPad1または2では正しく見えません。これは本当に奇妙です。スクリーンショットを撮り、2つの違いを投稿するつもりでしたが、さらに奇妙なことに、スクリーンショットは同じように見えます(もちろん、明るさは両方で同じです)。
古いiPadでは色が本当に色あせているように見えます。iPad 3がRetinaディスプレイであることは知っていますが、それ以上のものに違いないと思います。