根据核心动画文档,设置图层内容应触发隐式 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-推荐答案 strong>
好的,我正在从我的应用程序中复制一些代码。首先,我通常不是使用 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/
|