OStack程序员社区-中国程序员成长平台

标题: ios - CALayer "contents"属性上的隐式动画 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 12:35
标题: ios - CALayer "contents"属性上的隐式动画

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

- (id<CAAction>)actionForLayerCALayer *)theLayer
                        forKeyNSString *)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;
}

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

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



Best Answer-推荐答案


好的,我正在从我的应用程序中复制一些代码。首先,我通常不是使用 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];

关于ios - CALayer "contents"属性上的隐式动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17744359/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4