作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Mac 上,当按住向上或向下箭头时,Mail 和 Finder 的表格 View 上会出现稳定的滚动效果。行突出显示与列的顶部或底部齐平,并且行逐步通过,没有动画。
8年前好像是hard to not do this 。现在我似乎无法停止 NSOutlineView
上的 scrollRowToVisible
动画。
我尝试使用 NSAnimationContext.beginGrouping()
或 CATransaction.begin()
等包装调用,以将任何动画持续时间设置为 0.0
但运气不佳。
无论如何,有没有办法让这个调用变得简单——或者我应该使用一些更低级别的东西?
编辑
这是我的代码。持续时间在这里没有影响。总是有几帧滚动动画,并且动画的端点稍微不规则(即滚动到 View 的底部边缘并不总是与底部边缘对齐)。
if selectedRows != outlineView.selectedRowIndexes {
outlineView.selectRowIndexes(selectedRows, byExtendingSelection: false)
// I would love this not to animate like in mail, but it cannot be stopped!!!
if selectedRows.one {
NSAnimationContext.beginGrouping()
NSAnimationContext.current.allowsImplicitAnimation = false
NSAnimationContext.current.duration = 0
outlineView.scrollRowToVisible(selectedRows.first!)
NSAnimationContext.endGrouping()
}
}
使用 runAnimationGroup 具有相同的结果:
NSAnimationContext.runAnimationGroup( { current in
current.allowsImplicitAnimation = false
current.duration = 0
outlineView.scrollRowToVisible(selectedRows.first!)
}, completionHandler: nil)
我的表格中有可变高度的行,但我不明白为什么这会产生影响。从上面的代码中,选择的变化总是在表格中的任何移动之前突出显示,进一步表明滚动动画没有被删除。
最佳答案
我自己也遇到了这个问题,并通过子类化 NSClipView
并覆盖 funcscroll(to newOrigin: NSPoint)
解决了它,如下所示:
override func scroll(to newOrigin: NSPoint) {
super.setBoundsOrigin(newOrigin)
}
这应该完全禁用平滑滚动,这是您所描述的动画效果,用于容纳子类剪辑 View 的 ScrollView 。
关于cocoa - 如何在没有动画的情况下滚动RowToVisible,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57070733/
我是一名优秀的程序员,十分优秀!