NSScrollView/NSCollectionView 在 NSVisualEffectView 上导致闪烁
NSScrollView/NSCollectionView on NSVisualEffectView cause flickering
我在 NSPopover 中的 NSVisualEffectView 中有一个 NSCollectionView。每次刷新时(添加、删除、重新加载 NSCollectionViewItem,甚至只是单击 NSCollectionViewItem 的 视图上的按钮),它在 控件.
这是我在打开时尝试获取的屏幕截图:
它或多或少是这样的,但只有当重绘发生时:
此外,如果我在上面放置一个带边框的按钮,当点击时颜色会消失,就像闪烁一样:
我尝试设置不同的背景颜色 views/controls,但似乎 NSCollectionView 为空时总是 black/white(取决于 UI 颜色选择):
我错过了什么吗?
编辑:
通过添加 scrollView.needsDisplay = false/true
before/after 项目更改将使一些闪烁消失。尽管如此,大多数问题仍然存在。
此外,如果我强制启用水平滚动条或禁用自动调整大小子视图,则当 add/remove 项时闪烁将不再显示。
我在 NSPopover 中使用 NSTableView 时遇到了同样的问题。我能够通过将所有控件设置为外观类型 Aqua 而不是 dark/light.
来修复它
好的,似乎在有问题的视图上禁用 "Autoresize Subviews" 就可以解决问题。
我在 NSPopover 中的 NSVisualEffectView 中有一个 NSCollectionView。每次刷新时(添加、删除、重新加载 NSCollectionViewItem,甚至只是单击 NSCollectionViewItem 的 视图上的按钮),它在 控件.
这是我在打开时尝试获取的屏幕截图:
它或多或少是这样的,但只有当重绘发生时:
此外,如果我在上面放置一个带边框的按钮,当点击时颜色会消失,就像闪烁一样:
我尝试设置不同的背景颜色 views/controls,但似乎 NSCollectionView 为空时总是 black/white(取决于 UI 颜色选择):
我错过了什么吗?
编辑:
通过添加 scrollView.needsDisplay = false/true
before/after 项目更改将使一些闪烁消失。尽管如此,大多数问题仍然存在。
此外,如果我强制启用水平滚动条或禁用自动调整大小子视图,则当 add/remove 项时闪烁将不再显示。
我在 NSPopover 中使用 NSTableView 时遇到了同样的问题。我能够通过将所有控件设置为外观类型 Aqua 而不是 dark/light.
来修复它好的,似乎在有问题的视图上禁用 "Autoresize Subviews" 就可以解决问题。