NSCollection视图与充满活力的背景



我正在尝试在我的应用程序中获取一个NSCollectionView,以使用充满活力的(半模糊的透明)背景。我已经成功地为其他视图实现了这一点,只需将视图(例如标签或进度指示器)添加到NSVisualEffectView。我还在NSCollectionView用来呈现其内容的NSCollectionViewItem视图上尝试过这个。这也行得通。

但我无法让NSCollectionView使用充满活力的背景。我已经通过将包含NSCollectionView的NSScrollView添加到NSVisualEffectView来尝试此操作,但这不起作用。我还将 drawsBackground 属性设置为 false(在界面生成器中和以编程方式:collectionScrollView?.drawsBackground = falsecollectionScrollView?.backgroundColor = NSColor.clearColor()

视图层次结构为:

Window
- View
  - Split View
    - Custom View (with a source list)
    - Custom View
      - Visual Effect View
        - Scroll View
          - Clip View
            - Collection View

铌。我还尝试将包含NSCollectionViewNSScrollView的背景颜色更改为任何其他颜色(例如红色),但这也不起作用(无论是在界面生成器中还是以编程方式)。背景保持白色。

上面的注释是正确的,但重要的是要注意,NSCollectionView嵌入在具有自己背景的NSScrollView中。解决方案是将集合视图的背景设置为清除,并将封闭滚动视图设置为不绘制其背景。这可以在界面生成器中完成,也可以使用下面的第二行代码完成。

collectionView.backgroundColors = @[[NSColor clearColor]];
collectionView.enclosingScrollView.drawsBackground = NO;

当然,请确保没有其他超级视图绘制不透明的背景(例如,将父视图的类设置为NSVisualEffectView

更多细节可以在这个答案中找到(基本上是同一个问题)。

最新更新