objective-c - NSVisualEffectView 上的 NSScrollView/NSCollectionView 导致闪烁

标签 objective-c macos swift cocoa nsvisualeffectview

我在 NSPopover 中的 NSVisualEffectView 中有一个 NSCollectionView。每次刷新时(添加、删除、重新加载 NSCollectionViewItem,甚至只是单击 NSCollectionViewItem 的 View 上的按钮),控件 都会出现故障.

这是我在打开时尝试获取的屏幕截图:

Flickering

它或多或少是这样的,但只有当重绘发生时:

enter image description here

另外,如果我在上面放置一个带边框的按钮,当点击时颜色会消失,就像闪烁一样:

enter image description here

我尝试在不同的 View /控件中设置背景颜色,但似乎 NSCollectionView 为空时将始终为黑色/白色(取决于 UI 颜色选择):

enter image description here

我错过了什么吗?

编辑:

通过在项目更改之前/之后添加 scrollView.needsDisplay = false/true 将使一些闪烁消失。尽管如此,大多数问题仍然存在。

此外,如果我强制启用水平滚动条或禁用自动调整大小 subview ,则在添加/删除项目时将不再显示闪烁。

最佳答案

我在 NSPopover 中使用 NSTableView 时遇到了同样的问题。我能够通过将所有控件设置为外观类型 Aqua 而不是深色/浅色来修复它。

关于objective-c - NSVisualEffectView 上的 NSScrollView/NSCollectionView 导致闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30633038/

相关文章:

ios - 如何在 applicationDidBecomeActive 中使用 deviceToken

macos - NSTextField 和 Opt+Enter 等用于强制多行 - 错误还是功能?

c# - 如何在 MonoMac 中制作一个只有托盘图标的 C# 应用程序(无停靠图标)?

swift - 如何启用链接以在 WebView 的默认浏览器中打开

SwiftUI - NavigationView 错误消息 - 传递给不带参数的调用的参数

Swift:异步方法进入 while 循环

ios - 如何显示日期和日期的时区,与定义的国家/地区相关?

ios - 如何使用 Frame Size 从 ViewController 调用自定义 UIView

objective-c - 如何将 NSData 转换为 NSString 并将 NSString 恢复为 NSData?

ios - 在选择上快速更改文本颜色