2011-06-14 135 views
2

我想添加一個漸變爲了淡入和出我的UIScrollView文本。我收到了添加CAGradientLayer的建議。我認爲我會在開始時做這樣的事情,並且只是覆蓋整個事情,而不是擔心上面和下面的部分,因爲我對漸變和繪圖一般都不熟悉。我試過這個,但我不認爲這是正確的,因爲我的UIScrollView中的UILabel文本看起來沒有改變。我在正確的軌道上嗎?謝謝。添加一個漸變到UIScrollView

編輯:

CAGradientLayer *gradient = [CAGradientLayer layer]; 
    CGColorRef darkColor = [[UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.6] CGColor]; 
// CGColorRef darkColor = [[self.scrollView.backgroundColor colorWithAlphaComponent:0.5] CGColor]; 
// CGColorRef lightColor = [[UIColor colorWithRed:0.8 green:0.8 blue:0.8 alpha:0.6] CGColor]; 
    CGColorRef lightColor = [[self.scrollView.backgroundColor colorWithAlphaComponent:1.0] CGColor]; 
    CGRect gradientFrame = self.scrollView.bounds; 
    gradientFrame.size.height = 50; 
    gradient.frame = gradientFrame; 
    gradient.colors = [NSArray arrayWithObjects: (id)darkColor, (id)lightColor, nil]; 
    [self.scrollView.layer addSublayer:gradient]; 

我使用不同的RGB,Alpha值嘗試這幾個不同的方式,我不能讓它看起來正確正好有文字淡出。我嘗試了從0.0到1.0的alpha值的backgroundColor,我沒有看到任何改變。

+0

嘗試第一個只是改變'scrollView.backgroundColor'來檢查這不是一個透明度'.alpha'問題的組件添加。 – 2011-06-14 17:50:50

+0

我將backgroundColor更改爲不同的顏色,我確實看到了漸變。但它只是一個應用於我的整個scrollView區域的漸變。所以它看起來像一個正方形,而不是文本淡出。所以我假設我需要使用backgroundColor,但不知道如何。有什麼想法嗎?謝謝。 – Crystal 2011-06-16 17:25:21

+0

請發佈更多與'alpha'屬性有關的代碼,很難想像*你在做什麼w/o :) – 2011-06-16 17:39:01

回答

2

如果將漸變添加到滾動視圖,它將使用滾動視圖滾動。把它添加到滾動視圖superview應該的伎倆。

如果它足夠大,它仍然應該是可見的。

這個工作對我來說:

+ (CAGradientLayer *)maskWithHorizontalFadingBordersWithinBounds:(CGRect)bounds 
{ 
    CAGradientLayer * maskLayer = [CAGradientLayer layer]; 

    id outerColor = (id)[UIColor colorWithWhite:1.0 alpha:0.0].CGColor; 
    id innerColor = (id)[UIColor colorWithWhite:1.0 alpha:1.0].CGColor; 

    maskLayer.colors = @[outerColor, innerColor, innerColor, outerColor]; 
    maskLayer.locations = @[@0.0  , @0.025 , @0.975 , @1.0]; 
    maskLayer.bounds = bounds; 
    maskLayer.anchorPoint = CGPointZero; 

    return maskLayer; 
} 

呼叫此時,相應的初始化在這個方法中,要小心不要往往需要創建圖層。

scrollViewsSuperView.layer.mask = [CAGradientLayer maskWithHorizontalFadingBordersWithinBounds:scrollView.bounds]; 

缺點:滾動條也會被影響,我還是比較喜歡這種簡單的解決方案。

替代:添加掩模作爲子層滾動視圖本身並重置其位置爲0 scrollViewDidScroll。

+0

我更喜歡將'UIScrollView'嵌入到'UIView'中,並將掩碼應用到後臺UIView。但是,您的解決方案解決了我在整個視圖中延遲淡出的問題...我沒有意識到我需要(4)顏色而不是(3)'[outerColor,innerColor,** innerColor **,outerColor] '。 – Stan 2018-01-13 22:49:48