我有一个“双面板选择器”或“鞋盒”,使用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
已经尝试过,对此问题没有效果。
Finder有侧边栏隐藏功能。动画是黄油般的。在大纲模式下,列标题有一些可疑的转换。
虽然我们看不到Finder如何优化动画,但至少它表明可以实现平滑动画。
任何建议或答案都将不胜感激。