드래그 할 수있는 뷰 중 하나에서 사용자가 부적절한 장소에 떨어 뜨리면 마우스가 내려 갔을 때 기록 된 원래 프레임으로 떨어집니다. 이없이 애니메이션을 몇 일 동안 잘 작동하고있다,하지만 난 애니메이션을 도입하기로 결정했습니다 :이 NSAnimationLinear와 협력NSAnimationEaseOut 이상한 동작으로 NSViewAnimation 사용하기
-(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];
}
}
을 기본 NSAnimationEaseInOut,하지만 실제로 원하는 것은 단순히 의미입니다 감속, NSAnimationEaseOut이해야한다고 가정합니다. 그러나 어떤 이유로 뷰를 사용하면 뷰가 끝날 프레임에 즉시 스냅 한 다음 커서가 놓은 곳 (시작 프레임)으로 슬라이딩하여 다시 끝내야 만합니다 (끝내야하는 대상). .
다른 모든 모드 (NSAnimationLinear, NSAnimationEaseIn, NSAnimationEaseInOut)는 정상적으로 작동하는 것 같습니다. NSAnimationEaseOut의 목적을 오해하고 있습니까?