Cocoa 如何设置滚动点的动画?

Cocoa 如何设置滚动点的动画?,cocoa,scroll,Cocoa,Scroll,在上面的代码中,我需要设置滚动动画。我怎样才能做到这一点? 谢谢。我不确定这是否是受支持的动画类型,但您是否尝试过通过animator代理对象调用 例如,[[self-animator]scrollPoint:NSMakePoint(x,y)]您可以创建NSAnimation的子类来执行此操作。我已经创建了一个,作为我的一个开源项目的一部分(具有公共域许可) 您可以在这里找到:(注意:此项目已启用ARC。如果您不使用ARC,则需要根据需要进行更新) 例如: - (void)mouseDragge

在上面的代码中,我需要设置滚动动画。我怎样才能做到这一点?
谢谢。

我不确定这是否是受支持的动画类型,但您是否尝试过通过
animator
代理对象调用


例如,
[[self-animator]scrollPoint:NSMakePoint(x,y)]

您可以创建
NSAnimation
的子类来执行此操作。我已经创建了一个,作为我的一个开源项目的一部分(具有公共域许可)

您可以在这里找到:(注意:此项目已启用ARC。如果您不使用ARC,则需要根据需要进行更新)

例如:

- (void)mouseDragged:(NSEvent *)theEvent {
    NSSize dynamicImageSize;
    dynamicImageSize = [[self image] size];
    NSSize contentSize = [(NSScrollView*)[[self superview] superview] contentSize];
    if(dynamicImageSize.height > contentSize.height || dynamicImageSize.width > contentSize.width)
    {
        float x = startOrigin.x - ([theEvent locationInWindow].x - startPt.x);
        float y = startOrigin.y - ([theEvent locationInWindow].y - startPt.y);
        [self scrollPoint:NSMakePoint(x, y)];
    }
}

在我的应用程序中,我使用动画工具设置了
clipView
boundsOrigin

[DuxScrollViewAnimation animatedScrollToPoint:NSMakePoint(x,y) inScrollView:self.enclosingScrollView];

不,那不行。这不是一个受支持的可设置动画的属性(尽管这可能是一个很好的增强请求?)?这似乎是一个非常简单的请求…@Chetan:+1,我想知道这一点,我也会小心使用这个方法-我看到一些奇怪的行为(例如,如果新原点的值不是一个精确的整数,滚动条就会断开)。从苹果的文档来看:你通常不会直接与NSClipView类交互;它主要作为NSScrollView类的滚动机制提供。我很想使用Abhi的方法,它依赖于文档视图上的scrollPoint。非常感谢。这门课真的很有帮助,动画效果也和预期的一样。@aumanets请记住,小牛可能应该重新学习这门课。我还没有这样做-滚动视图不再使用CubiceAseNout。我不知道如何实现新的算法,我没想过。谢谢你的警告。
[NSAnimationContext beginGrouping];
NSClipView* clipView = [[myView enclosingScrollView] contentView];
NSPoint newOrigin = [clipView bounds].origin;
newOrigin.x = my_new_origin.x;
[[clipView animator] setBoundsOrigin:newOrigin];
[NSAnimationContext endGrouping];