2013-04-25 12 views
0

我想让我的UIScrollView的末端淡出 - 就像一个UITableView。我找到了下面的代码。我在一个名为initWithFrame:...的方法中使用它在UIScrollView子类中。

if (!maskLayer) 
{ 
    maskLayer = [CAGradientLayer layer]; 

    CGColorRef outerColor = [UIColor colorWithWhite:0 alpha:1.0].CGColor; 
    CGColorRef innerColor = [UIColor colorWithWhite:1.0 alpha:0.0].CGColor; 

    maskLayer.colors = [NSArray arrayWithObjects:(__bridge id)outerColor, 
         (__bridge id)innerColor, (__bridge id)innerColor, (__bridge id)outerColor, nil]; 
    maskLayer.locations = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0], 
          [NSNumber numberWithFloat:0.2], 
          [NSNumber numberWithFloat:0.8], 
          [NSNumber numberWithFloat:1.0], nil]; 

    maskLayer.bounds = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height); 
    maskLayer.anchorPoint = CGPointZero; 
    CGColorRelease(outerColor); 
    CGColorRelease(innerColor); 
    self.layer.mask = maskLayer; 
} 

注:我已经看到this question,但我已经有__bridge我的色彩了。

我确定这是非常基本的东西,但我无法弄清楚。我添加了CGColorRelease行希望能解决它,但它没有...

有没有人看到我不?

回答

1

假设您要在XIB中设置scrollview,请删除if语句并将代码放入您的子类中的awakeFromNib中。如果手动创建滚动视图对象,请在执行inithWithFrame后调用该代码。

另外,翻转outerColor和innerColor变量的alpha值。这是代码。

- (void) setGradient 
{ 
    CAGradientLayer * maskLayer = [CAGradientLayer layer]; 

    // Flipped your alpha values around. 
    CGColorRef outerColor = [UIColor colorWithWhite:0 alpha:0.0].CGColor; 
    CGColorRef innerColor = [UIColor colorWithWhite:1.0 alpha:1.0].CGColor; 

    maskLayer.colors = [NSArray arrayWithObjects:(__bridge id)outerColor, 
         (__bridge id)innerColor, (__bridge id)innerColor, (__bridge id)outerColor, nil]; 
    maskLayer.locations = [NSArray arrayWithObjects:[NSNumber numberWithFloat:0.0], 
          [NSNumber numberWithFloat:0.2], 
          [NSNumber numberWithFloat:0.8], 
          [NSNumber numberWithFloat:1.0], nil]; 

    maskLayer.bounds = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height); 
    maskLayer.anchorPoint = CGPointZero; 
    CGColorRelease(outerColor); 
    CGColorRelease(innerColor); 
    self.layer.mask = maskLayer; 

} 
- (void)awakeFromNib 
{ 
    [self setGradient]; 
} 
+0

谢谢你,宝贝! – Undo 2013-04-26 16:37:26