使用UIView掩码时旋转性能不佳

时间:2012-06-13 10:54:38

标签: ios ipad core-animation calayer masking

我有几个UITableViews应该在顶部淡出。它们在一个UIView中彼此相邻。由于所有的表视图都应该在同一个地方淡出,我想我应该在容器UIView上设置一个alpha掩码。这很好用,所有表格视图中的滚动都很流畅,淡入淡出看起来不错。

问题是界面方向发生变化时。这真的很不稳定。并且仅在应用蒙版时。如果我删除淡入淡出,一切都很顺利。

这是应用所述掩码的代码:

// If you want the Table Views to "fade out" at the top, use this function to set the height!
- (void) setFadeHeight:(CGFloat)fadeHeight
{
    if (fadeHeight == 0.0) {
        self.layer.mask = nil;
        return;
    }

    // Create a gradient layer to use as mask
    CAGradientLayer *l = [self createGradientLayerWithHeight:fadeHeight];
    l.shouldRasterize = NO;
    [self.layer setMask:l];
}

// Creates a transparency gradient. Helper function for the above function
- (CAGradientLayer *) createGradientLayerWithHeight:(CGFloat)gradientHeight
{
    CAGradientLayer *mask = [CAGradientLayer layer];
    mask.locations = [NSArray arrayWithObjects:
                      [NSNumber numberWithFloat:0.0],
                      [NSNumber numberWithFloat:1.0],
                      nil];

    mask.colors = [NSArray arrayWithObjects:
                   (__bridge id)[UIColor clearColor].CGColor,
                   (__bridge id)[UIColor whiteColor].CGColor,
                   nil];

    mask.frame = CGRectMake(0.0, 0.0, self.bounds.size.width, self.bounds.size.height);

    // vertical direction
    mask.startPoint = CGPointMake(0.0, 0.0); 
    mask.endPoint = CGPointMake(0.0, gradientHeight / self.bounds.size.height);
    return mask;
}

问题可能与this Stack Overflow question有关,但由于我在表格中顺利滚动,我不太确定。我也尝试根据该问题的答案将shouldRasterize设置为NO。

0 个答案:

没有答案