带有shouldRasterize的CAGradientLayer会导致不需要的行

时间:2017-02-10 12:55:03

标签: ios uitableview uiview cagradientlayer

我在CAGradientLayer的标题视图中使用TableView。为了使滚动顺利,我将shouldRasterize属性设置为YES,这导致了问题。

绘制渐变图层,就像它有边框一样。我在layoutSubviews中设置的所有帧及其所有字段都是整数。

以下是截图:

它是如何出现的:

How it appears

它看起来如何:

How it have to look like

以下是与此渐变图层相关的代码

- (void)createShadow {
    CAGradientLayer *shadowLayer= [CAGradientLayer layer];

    UIColor *startColor = [UIColor colorWithWholeRed:236 green:235 blue:236];
    UIColor *destinationColor = [UIColor colorWithWholeRed:248 green:248 blue:250];

    shadowLayer.borderColor = [UIColor clearColor].CGColor;
    shadowLayer.borderWidth = 0;
    shadowLayer.colors = @[(id)startColor.CGColor,(id)destinationColor.CGColor];
    shadowLayer.shouldRasterize = YES;
    [self.layer addSublayer:shadowLayer];

    self.shadowLayer = shadowLayer; 
}

- (void)updateShadow {
    CGRect newRect = CGRectMake(0, 0,
                            self.frame.size.width, ceil(self.frame.size.height * 0.3));
    [self.shadowLayer setFrame:newRect]; 
}

- (void)layoutSubviews {
    [super layoutSubviews];
    [self updateShadow];
}

如果你知道如何解决这个问题,请告诉我)

0 个答案:

没有答案