首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用具有NSAnimationEaseOut怪异行为的NSViewAnimation

使用具有NSAnimationEaseOut怪异行为的NSViewAnimation
EN

Stack Overflow用户
提问于 2011-01-02 18:00:11
回答 1查看 1.1K关注 0票数 2

在我的一个可以拖动的视图中,如果用户将其放在不适当的位置,它会简单地返回到鼠标按下时录制的原始帧。这几天在没有动画的情况下工作得很好,但我决定引入动画:

代码语言:javascript
复制
-(void)dropToFrameOrigin:(NSPoint)newFrameOrigin animated:(BOOL)animated {
    if (animated) {
        NSRect newFrameRect = [self frame];
        newFrameRect.origin = newFrameOrigin;

        NSDictionary *animationInfo = [NSDictionary dictionaryWithObjectsAndKeys:self, NSViewAnimationTargetKey,
                                       [NSValue valueWithRect:[self frame]], NSViewAnimationStartFrameKey,
                                       [NSValue valueWithRect:newFrameRect], NSViewAnimationEndFrameKey,
                                        nil];
        NSViewAnimation *animation = [[NSViewAnimation alloc] initWithViewAnimations:[NSArray arrayWithObject:animationInfo]];
        [animation setDuration:0.2];
        [animation setAnimationCurve:NSAnimationLinear];
        [animation startAnimation];
        [animation release];
    } else {
        [self setFrameOrigin:newFrameOrigin];
    }
}

这是与NSAnimationLinear一起工作的,也是默认的NSAnimationEaseInOut,但我真正想要的仅仅是减速感,我假设NSAnimationEaseOut应该这样做。但是,由于某些原因,当我使用它时,视图会立即捕捉到它应该结束的帧,然后以动画方式滑回到光标放置它的位置(开始帧),然后捕捉回(应该是)结束帧。

所有其他模式(NSAnimationLinear、NSAnimationEaseIn、NSAnimationEaseInOut)似乎都工作得很好。我是不是误解了NSAnimationEaseOut的用途?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-12 12:29:42

出于某些原因,您必须翻转开始帧和结束帧才能使NSAnimationEastOut工作。此外,还需要设置动画代理,以便在动画结束时收到通知,然后必须手动将视图的帧设置为原始结束帧。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4577927

复制
相关文章

相似问题

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