2013-11-09 52 views
1

我想爲我的ImageView設置漸變背景。我在Stack Overflow找到了一個解決方案。但它並不能真正滿足我的需求。設置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; 
} 

然後我的層添加到我的UIImageView

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

這裏是結果:

enter image description here

在這裏我的界面設置:

enter image description here

正如你可以看到,有兩個UIImageViews。我想在漸變視圖中旋轉圖層,所以它從左到右,而不是現在的樣子。

使用以下代碼片段,我可以旋轉整個ImageView。這只是一種解決我的問題,但我不希望出現這種情況,是因爲它那種破壞我的界面..

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

所以基本上我正在尋找一個解決方案做梯度由左到右,而不是從頂部到底部。
你們有什麼想法嗎?我是XCode的新手,並希望每一個提示!

回答

3

enter image description here這是我從下面的代碼得到的結果。我想這就是你正在努力實現的

- (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 setStartPoint:CGPointMake(0.0, 0.5)];//add these lines 
    [gradientLayer setEndPoint:CGPointMake(1.0, 0.5)]; 
    gradientLayer.colors = colors; 
    gradientLayer.locations = locations; 

    return gradientLayer; 
} 
+0

真的很有幫助,謝謝! – Pawan

0

嘗試使用變換將圖層添加到imageview之前旋轉圖層。

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);