我需要有关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/

10-12 14:31