1

ImageView にグラデーションの背景を設定したいと考えています。ここスタックオーバーフローでその解決策を見つけました。しかし、それは私のニーズを本当に満たしていません。

グラデーションを左から右にしたい。私が見つけた私のコードでは、上から下にしか埋めることができません。

次のコードでグラデーション レイヤーを作成します。

+ (CAGradientLayer *)colorGradientWithColor:(UIColor *)color
{
    UIColor *colorOne = color;
    UIColor *colorTwo = [UIColor colorWithRed:1.0f green:1.0f blue:1.0f alpha:0.0f];

    NSArray *colors = [NSArray arrayWithObjects:(id)colorOne.CGColor, colorTwo.CGColor, nil];

    NSNumber *stopOne = [NSNumber numberWithFloat:0.0];
    NSNumber *stopTwo = [NSNumber numberWithFloat:0.9];

    NSArray *locations = [NSArray arrayWithObjects:stopOne, stopTwo, nil];

    CAGradientLayer *gradientLayer = [CAGradientLayer layer];
    gradientLayer.colors = colors;
    gradientLayer.locations = locations;

    return gradientLayer;
}

次に、レイヤーを my に追加しますUIImageView

CAGradientLayer *gradientLayer = [BackgroundGradient colorGradientWithColor:difficultyColor];
gradientLayer.frame = myImageView.bounds;
[myImageView.layer insertSublayer:gradientLayer atIndex:0];

結果は次のとおりです。

ここに画像の説明を入力

そしてここで私のインターフェース設定:

ここに画像の説明を入力

ご覧のとおり、 が 2 つありUIImageViewsます。グラデーション ビューでレイヤーを回転させたいので、現在の状態ではなく、左から右に移動します。

次のコード フラグメントを使用すると、全体を回転させることができImageViewます。これは私の問題を解決するだけですが、インターフェースを破壊するので、私はそれを望んでいません..

myImageView.transform = CGAffineTransformMakeRotation(M_PI*1.5f);

したがって、基本的には、上から下ではなく左から右へのグラデーションを行うソリューションを探しています。
何かアイデアはありますか?私は XCode を初めて使用するので、あらゆるヒントをいただければ幸いです。

4

3 に答える 3

0

gradient層の始点と終点を使用します。

BOOL horizontal = YES;
//(YES for left to right or NO for top to bottom)

gradientLayer.startPoint = horizontal ? CGPointMake(0, 0.5) : CGPointMake(0.5, 0);

gradientLayer.endPoint   = horizontal ? CGPointMake(1, 0.5) : CGPointMake(0.5, 1);
于 2013-11-09T12:20:42.957 に答える