- (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)];
}
}
在上面的代码中,我需要为滚动设置动画。我怎样才能做到这一点? 感谢。
答案 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)];