2

根据核心动画文档,设置图层内容应触发隐式 0.25 动画,该动画将在新旧图像之间转换。我还看到很多地方人们都在询问如何删除这个隐式动画,但由于某种原因,当我在我的项目中尝试这个时,我得到了即时交换的图像。在文档中阅读了更多内容,我看到这段代码被剪断了:

- (id<CAAction>)actionForLayer:(CALayer *)theLayer
                        forKey:(NSString *)theKey {
    CATransition *theAnimation=nil;

    if ([theKey isEqualToString:@"contents"]) {

        theAnimation = [[CATransition alloc] init];
        theAnimation.duration = 1.0;
        theAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
        theAnimation.type = kCATransitionPush;
        theAnimation.subtype = kCATransitionFromRight;
    }
    return theAnimation;
}

这意味着“内容”不是隐含的动画。

我很想更好地理解这一点。

4

1 回答 1

1

好的,我正在从我的应用程序中复制一些代码。首先,我通常不是使用 alloc..init.. 而是使用 +animation 来获取 CATransition。其次,我没有看到您正在向图层添加过渡。第三,我不确定 CATransition 是隐式动画的,CALayer 属性是的。

CATransition *transition = [CATransition animation];
    transition.duration = 1;
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transition.type = kCATransitionPush;
    transition.subtype = slideCATransitionCompareTable[ arc4random() % 4]; //to get a random subtype 
    [self.slideShowReceiptImageView.layer addAnimation:transition forKey:nil];
于 2013-07-19T12:27:06.570 回答