我需要有关CABasicAnimation的帮助。我正在尝试将NSView左移300像素。我找到了这个SO线程:How to animate the frame of an layer with CABasicAnimation?
事实证明,无法对框架进行动画处理,答案之一是指向Apple网站上质量检查的链接,但这将我带到了通用页面:
http://developer.apple.com/library/mac/#qa/qa1620/_index.html
那么,我该如何做像翻译NSView / CALyer一样简单的事情?
谢谢!
最佳答案
NSView有一个称为NSAnimatablePropertyContainer的协议,该协议使您可以为视图创建基本动画:
NSAnimatablePropertyContainer协议定义了一种添加方法
在不影响API的情况下动画化现有类...
将符合键值编码的“设置”消息发送到代理将
为其目标的自动动画属性触发动画
宾语。
可以在here中找到NSAnimatablePropertyContainer协议
我最近使用此技术来更改帧的原点:
-(void)setOrigin:(NSPoint)aPoint {
[[self animator] setFrameOrigin:aPoint];
}
我没有调用[view setFrameOrigin:],而是创建了另一个名为setOrigin:的方法,该方法随后将setFrameOrigin:调用应用于视图的动画制作器。
如果您需要更改动画的持续时间,可以这样做(类似于CATransactions):
-(void)setOrigin:(NSPoint)aPoint {
[NSAnimationContext beginGrouping];
[[NSAnimationContext currentContext] setCompletionHandler:^{
...Completion Callback Code goes here...
}];
[[NSAnimationContext currentContext] setDuration:1.0];
[[self animator] setFrameOrigin:aPoint];
[NSAnimationContext endGrouping];
}
NSAnimationContext的描述here
关于objective-c - CABasicAnimation将框架向左移动300px,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9662692/