1

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ディスプレイであることは知っていますが、それ以上のものに違いないと思います。

素晴らしい写真ではありませんが、それでも劇的な違いを見ることができます。

4

1 に答える 1

0

DavidRönnqvistが指摘したように、この質問に対する答えは、これらのデバイスは単に同じように色を表示しないということです。これに対する簡単な解決策はありません、そしておそらく解決策は行き過ぎでしょう。

于 2012-10-24T15:01:37.597 に答える