小编And*_* R.的帖子

完成后,在UIScrollView掩码中动画化CAGradientLayer的locations属性将重置

我试图动画a的位置,CAGradientLayer以便在UIScrollView达到某个位置时缩小.我将渐变设置为遮罩UIScrollView,并调整渐变的locations属性以在滚动视图滚动时展开一些.这对我来说很好,除非我尝试动画更改位置.当我执行动画时 - 无论是显式CABasicAnimation还是隐式 - 动画都能正确执行,但无论出于何种原因,一旦动画完成,它就会将渐变(无动画)的位置更改为其他非零开始和结束点.它每次使用相同的值来执行此操作,并且在我的代码中的任何位置都未指定这些值.

我对核心动画很新,所以也许我错过了一些东西,但据我所知,我的代码是正确的.我也试过等待执行动画,以解决滚动的任何时间问题,但这也没有帮助.

这是我的代码(相关部分,无论如何):

- (void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
    [CATransaction begin];
    [CATransaction setDisableActions:YES];
    gradientMask.position = CGPointMake(currentPageOffset, 0.0f);
    gradientMask.bounds = self.scrollView.bounds;
    [CATransaction commit];

    _animateGradientShrinkOnScroll = YES;

    // Reset scrollView contentOffset (I'm doing infinite paging)
    ...
}

- (void) scrollViewDidScroll:(UIScrollView *)scrollView {
    CGFloat offset = self.scrollView.contentOffset.x;
    CGFloat relativeOffset = offset - currentPageOffset;

    [CATransaction begin];
    [CATransaction setDisableActions:YES];
    gradientMask.position = self.scrollView.contentOffset;
    if (_animateGradientShrinkOnScroll)
        [CATransaction commit]; // if animating, set position w/o …
Run Code Online (Sandbox Code Playgroud)

iphone core-animation objective-c ios

4
推荐指数
1
解决办法
2228
查看次数

标签 统计

core-animation ×1

ios ×1

iphone ×1

objective-c ×1