首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CATransaction是即时的,忽略转换时间

CATransaction是即时的,忽略转换时间
EN

Stack Overflow用户
提问于 2010-11-19 17:37:37
回答 1查看 957关注 0票数 2

我不明白为什么这样的代码:

代码语言:javascript
复制
CALayer *viewLayer = [aView layer];
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:10.0f]
                 forKey:kCATransactionAnimationDuration];
viewLayer.position = CGPointMake(200.0f, 200.0f);
viewLayer.position = CGPointMake(320.0f, 480.0f);

[CATransaction commit];

移动视图,但移动不是动画(移动是即时的)。aView是UIView中的UIImageView。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-20 06:55:18

对于与视图关联的层,将禁用隐式操作。视图始终是其自己层的代理,它实现-actionForKey:禁用隐式动画,仅在UIView动画块内添加动画。最好的办法就是直接使用显式的CABasicAnimations。假设您想要从第一个点到第二个点设置动画,您可以使用类似于

代码语言:javascript
复制
CALayer *layer = aView.layer;

layer.position = CGPointMake(320, 480); // final position
CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"position"];
anim.fromValue = [NSValue valueWithCGPoint:CGPointMake(200, 200)];
anim.toValue = [NSValue valueWithCGPoint:layer.position]; // I believe this line is optional, it should default to current position
[layer addAnimation:anim forKey:@"position"];
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4223693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档