NSTableView 带有动画的scrollRowToVisible
我正在尝试实现一个滚动到 NSTableView 顶部和 NSTableView 底部的操作。我正在使用 scrollRowToVisible
但我希望该动作是动画的。有办法做到这一点吗?
I am trying to implement an action to scroll to the top of a NSTableView, and the bottom of the NSTableView. I am using scrollRowToVisible
but I'd love the action to be animated. Is there a way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
虽然 NSTableView 没有可以直接制作动画的滚动属性,但您可以通过一些数学动画来制作 NSTableView 所在的 NSClipView 的滚动动画。
以下是我的做法(在 NSTableView 的自定义子类中)如果可能的话,平滑地将 rowIndex 处的行设置为滚动到视图中心的动画:
While the NSTableView does not have a scroll property you can directly animate, you can instead, with a bit of math animate the scrolling of the NSClipView that the NSTableView lives in.
Here is how I did this (within a custom subclass of NSTableView) to smoothly animate the row at rowIndex to be scrolled to the center of the view, if possible:
如果您的目标是 10.8+ 并且您的表格视图是图层支持的,您可以执行以下操作:
If you're targeting 10.8+ and your table view is layer backed, you can do this:
这似乎不可能。 NSTableView 不支持 10.6 以下的任何类型的动画。从MasOSX10.7开始,一些简单的动画添加到了类中。您可以以动画方式插入、删除行以及将行移动到新位置。到目前为止就是这样。
It does not seem to be possible. NSTableView has not supported any kind of animations up to 10.6. Starting from MasOSX10.7 some simple animations added to the class. You can animate inserting, removing and moving rows to new positions. This is it so far.
没有简单的方法,但我会通过子类化 NSAnimation 来实现它,并且当它从 0.0 进展到 1.0 时,将其乘以总滚动距离以获得偏移量,并连续调用scrollToPoint: 以给出平滑滚动操作的外观。理论上它应该有效,尽管我不确定滚动视图的配合效果如何。
There's no easy way, but I would approach it by subclassing NSAnimation, and as it progresses from 0.0 to 1.0, multiply that by the total scroll distance to get your offset, and successively call scrollToPoint: to give the appearance of a smooth scrolling action. It should work in theory, though I'm not sure how well the scrollview would cooperate.
CuriousKea 实际上提出了一个有效但肮脏的解决方案。
NSTableView 实现滚动动画的正确方法是:
CuriousKea actually proposed a working but dirty solution.
The right way to implement scroll animation for NSTableView is: