我有几个 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;
}
该问题可能与此 Stack Overflow question 有关,但由于我在表格中平滑滚动,我不太确定。我还尝试根据该问题的答案将 shouldRasterize 设置为 NO。