如何让NSSplitView折叠动画流畅?

时间:2017-09-20 15:58:56

标签: swift macos cocoa core-animation

我有一个“双面板选择器”或“鞋盒”,使用NSSplitView和两个NSOutlineView来实现,NSSplitView中的每个拆分项都有一个。基本上它看起来像这样:

[窗口工具栏]

|方|主|

可以通过

切换侧边栏
func toggleSidebar() {
    self.splitViewItems[0].animator().isCollapsed = 
        !self.splitViewItems[0].animator().isCollapsed
}

问题

动画不流畅,特别是当“主要”的内容在工具栏下方向上滚动时(具有半透明效果)。

尝试

我有一个NSTableHeaderCell的自定义子类,其覆盖范围为draw(withFrame:in:)。我注意到在动画期间调用draw(withFrame:in:)方法(我估计每帧)。

我还将NSOutlineView的{​​{3}}设置为图层备份,并将其设置为:

self.outlineView.headerView!.layerContentsRedrawPolicy = .onSetNeedsDisplay
self.outlineView.headerView!.layerContentsPlacement = .left

其他headerView已经尝试过,对此问题没有效果。

macOS的Finder

Finder有侧边栏隐藏功能。动画是黄油般的。在大纲模式下,列标题有一些可疑的转换。

虽然我们看不到Finder如何优化动画,但至少它表明可以实现平滑动画。

任何建议或答案都将不胜感激。

0 个答案:

没有答案