1

viewDidLoadでは、問題なくグラデーションを作成できます。

CAGradientLayer *blueGradient = [[CAGradientLayer layer] retain]; blueGradient.frame = CGRectMake(gradientStartX,gradientStartY,gradientWidth,gradientHeight);

ここで、gradientWith は、必要に応じて 320 または 1024 としてデバイス定義されます。

私ができないのは、 willRotateToInterfaceOrientation内でサイズを変更することです: - したがって、ユーザーが横向きモードに変更した後、右側の空の黒いスペースを取り除きます。(ナビゲーション バーとタブ バーは適切に動作します。)

(1) 新しい中間点に従ってグラデーションの新しい次元を再調整すること、(2) kCALayerMaxXMargin を使用すること、(3) 境界を使用することは、すべてうまくいくように見えました。境界は少し直感的に見えたので、それを試しました。

進歩がゼロであることを認めたくありません。

私は、self、view、layer、bounds、blueGradient、および CGRect(gradientStartX,gradientStartY,newGradientWidth,newGradientHeight) のすべての順列を試して成功するという力ずくの方法に還元されたと言うでしょう。

これは難しくありません。私の理解不足がそれを難し​​くしています。「そこにいた、それをやった」という人はいますか?

4

1 に答える 1

0

レイヤーのサイズは自動的に変更されますか? なら単純に

[blueGradient setNeedsDisplay];

トリックを行う必要があります。

これがお役に立てば幸いです、ポール

于 2010-05-09T12:00:54.230 に答える