Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 将NSViewAnimation与NSAnimationEaseOut一起使用会导致奇怪行为_Objective C_Cocoa_Macos_Nsviewanimation - Fatal编程技术网

Objective c 将NSViewAnimation与NSAnimationEaseOut一起使用会导致奇怪行为

Objective c 将NSViewAnimation与NSAnimationEaseOut一起使用会导致奇怪行为,objective-c,cocoa,macos,nsviewanimation,Objective C,Cocoa,Macos,Nsviewanimation,在我的一个可以拖动的视图中,如果用户将其放置在不合适的位置,它只会返回到鼠标按下时记录的原始帧。这几天来一直运行良好,没有动画,但我决定引入动画: -(void)dropToFrameOrigin:(NSPoint)newFrameOrigin animated:(BOOL)animated { if (animated) { NSRect newFrameRect = [self frame]; newFrameRect.origin = newFram

在我的一个可以拖动的视图中,如果用户将其放置在不合适的位置,它只会返回到鼠标按下时记录的原始帧。这几天来一直运行良好,没有动画,但我决定引入动画:

-(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,但我实际上想要的只是减速的感觉,我假设NSAnimationEaseInOut应该这样做。但是,由于某些原因,当我使用该选项时,视图会立即捕捉到它应该结束的帧,然后设置动画,将其滑回光标放置的位置(开始帧),然后捕捉回(应该是什么)结束帧


所有其他模式(NSAnimationLinear、NSAnimationEaseIn、NSAnimationEaseInOut)似乎都可以正常工作。我是否误解了NSAnimationEaseOut的用途?

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

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