objective-c - 更改核心动画代理持续时间的两种方法——一种不起作用……为什么?

标签 objective-c cocoa core-animation nstextview

我正在编写代码,为 NSTextView 在窗口中的移动设置动画。我希望用户可以设置持续时间。

这个版本工作正常:

 // code to setup TextView

[centerView addSubview:targetTextView];

[NSAnimationContext beginGrouping];
float finalDuration = expf((11-duration)/5) + 2;
[[NSAnimationContext currentContext] setDuration:(finalDuration)];
[[targetTextView animator]setFrame:NSMakeRect(-170,(centerViewRect.size.height * 1/2) - 40,160,80)];
[NSAnimationContext endGrouping];

这个将时间保留为默认值:

 // code to setup TextView

[centerView addSubview:targetTextView];

CABasicAnimation *posAnim = [CABasicAnimation animationWithKeyPath:@"frame"];
[posAnim setFromValue:[NSValue valueWithRect:NSMakeRect(centerViewRect.size.width - 170,(centerViewRect.size.height * 2/3) - 40,160,80)]];
[posAnim setToValue:[NSValue valueWithRect:NSMakeRect(10,(centerViewRect.size.height * 2/3) - 40,160,80)]];
float finalDuration = expf((11-duration)/5) + 2;
[posAnim setDuration:finalDuration];
[targetTextView setAnimations:[NSDictionary dictionaryWithObjectsAndKeys:posAnim,@"frame",nil]];
[[targetTextView animator]setFrame:NSMakeRect(-170,(centerViewRect.size.height * 1/2) - 40,160,80)];

谁能告诉我为什么第一个有效而第二个无效?他们好像就相当于我。

谢谢!

最佳答案

对于你要使用的CABasicAnimation
[CATransaction setAnimationDuration:yourDuration];

关于objective-c - 更改核心动画代理持续时间的两种方法——一种不起作用……为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11422646/

相关文章:

cocoa - Safari 5.1 npapi 问题

ios - 重复忙圈动画

objective-c - 为什么当我想顺时针旋转时,我的旋转只能逆时针旋转?

objective-c - UIView 大小和 UIWindow rootViewController

objective-c - 为什么 NSView 的 subview 在 Cocoa 应用程序终止时不发送释放消息?

iphone - 从 AppDelegate 访问类的运行实例

cocoa - 在 mac os X Dock 中添加自定义 View /窗口

ios - 禁用 CALayer 隐式动画

iphone:不调用 didReceiveAuthenticationChallenge 和 canAuthenticateAgainstProtectionSpace 以提供安全的 Restful 服务

ios - 创建类似于扩展 Swift 的 UIViewController 类别 (Obj-C)