我试图在我的应用程序中使用NSCollectionView
来使用充满活力(半模糊透明)的背景。我已经成功地为其他视图实现了这个,只需将视图(例如标签或进度指示器)添加到NSVisualEffectView
即可。我也在NSCollectionViewItem
视图中尝试了这个,NSCollectionView
用来呈现它的内容。这也有效。
但我不能让NSCollectionView
使用充满活力的背景。我已经尝试过将包含NSCollectionView的NSScrollView
添加到NSVisualEffectView
但这不起作用。我还将drawsBackground
属性设置为false(在Interface Builder中和编程方式:collectionScrollView?.drawsBackground = false
和collectionScrollView?.backgroundColor = NSColor.clearColor()
。
视图层次结构是:
Window
- View
- Split View
- Custom View (with a source list)
- Custom View
- Visual Effect View
- Scroll View
- Clip View
- Collection View
NB。我也尝试将包含NSScrollView
的NSCollectionView
的背景颜色更改为任何其他颜色(例如红色),但这也不起作用(在Interface Builder中或以编程方式)。背景保持白色。
上面的评论是正确的,但重要的是要注意NSCollectionView
嵌入在具有自己背景的NSScrollView
中。解决方案是设置集合视图的背景以清除并设置封闭的滚动视图以不绘制其背景。这可以在Interface Builder中完成,也可以使用下面的第二行代码完成。
collectionView.backgroundColors = @[[NSColor clearColor]];
collectionView.enclosingScrollView.drawsBackground = NO;
当然,请确保没有其他superview正在绘制不透明的背景(例如,将父视图的类设置为NSVisualEffectView
。
更多细节可以在this answer找到(基本上是同一个问题)。