如何动画滚动点?

时间:2009-07-11 09:47:37

标签: cocoa scroll

- (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)];
    }
}

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

3 个答案:

答案 0 :(得分:12)

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

您可以在此处找到它:https://github.com/abhibeckert/Dux/blob/master/Dux/DuxScrollViewAnimation.m(注意:此项目已启用ARC。如果您不使用ARC,则需要根据需要进行更新。)

示例:

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

答案 1 :(得分:6)

在我的应用中,我使用动画设置了clipView的{​​{1}}:

boundsOrigin

答案 2 :(得分:1)

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

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