透明的NSCollectionView背景

时间:2017-02-05 23:03:33

标签: swift background-color nscollectionview

我再次努力将NSViews背景颜色设置为透明。我有一个NSCollectionView作为NSClipView的一部分,它是NSScrollview的一部分。我的MainViewControllercollectionView的出口。添加两行代码并在编译背景后有时是透明的,但大多数时候不是:

view.wantsLayer = true
collectionView.layer?.backgroundColor = NSColor.clear.cgColor

我还试图选择/取消选择" Draw Background" IB中NSScrollView的属性没有任何影响。 我在这里想念什么

3 个答案:

答案 0 :(得分:5)

好的,经过漫长的邪恶试验和错误阶段后,我至少为自己找到了一个解决方案。要设置两种背景颜色以获得正确的行为:

  1. NSScrollView的背景颜色:
  2. enter image description here

    1. NSCollectionView原色:
    2. enter image description here

      两者都必须适当设置。在我将两者设置为相同的颜色时,我得到了我想要的背景。通过仅设置ScrollView背景颜色,在CollectionView中滚动项目时仍然存在白色背景。

答案 1 :(得分:5)

我努力让我的NSCollectionView背景“透明”@JFS解决方案指向了正确的方向:我终于通过设置两者父scrollView和collectionView背景来实现它: / p>

cvScrollView.backgroundColor = NSColor.clear
collectionView.backgroundColors = [NSColor.clear]

答案 2 :(得分:0)

要明确NSScrollView的背景,Swift 4.2中最好的选择是“不绘制背景”。让我们来看一个编程示例:

let scrollView = NSScrollView()
scrollView.drawsBackground = false
scrollView.contentView.drawsBackground = false

NSCollectionView的各个部分都有背景,因此您需要为各个部分指定颜色

let collectionView = NSCollectionView()
collectionView.backgroundColors = [.clear]

如果将backgroundColors设置为nil或为空数组,则背景颜色默认情况下设置为白色。

如果您为NSCollectionView设置了背景视图,则此数组将被忽略

您可以尝试将NSView为零的frame作为backgroundView的{​​{1}}