具有鲜明背景的NSCollectionView

时间:2016-03-09 00:17:36

标签: swift macos background nsscrollview nscollectionview

我试图在我的应用程序中使用NSCollectionView来使用充满活力(半模糊透明)的背景。通过简单地将视图(例如标签或进度指示器)添加到NSVisualEffectView,我已成功为其他视图实现了此功能。我还在NSCollectionViewItem用于呈现其内容的NSCollectionView视图上尝试了此操作。这也有效。

但我不能让NSCollectionView使用充满活力的背景。我通过将包含NSCollectionView的NSScrollView添加到NSVisualEffectView来尝试此操作,但这不起作用。我还将drawsBackground属性设置为false(在Interface Builder中以编程方式设置: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

NB。我还尝试将包含NSScrollView的{​​{1}}的背景颜色更改为任何其他颜色(例如红色),但这也不起作用(在Interface Builder中或以编程方式)。背景保持白色。

1 个答案:

答案 0 :(得分:0)

上面的评论是正确的,但必须注意,NSCollectionView嵌入在具有自己背景的NSScrollView中。解决方案是将收藏夹视图的背景设置为清除,并将封闭的滚动视图设置为不绘制其背景。这可以在Interface Builder中完成,也可以在下面的第二行代码中完成。

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

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

更多详细信息,请参见this answer(基本上是同一问题)。