2011-06-14 93 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