透明的NSCollectionView背景

问题描述 投票:7回答:3

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

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

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

swift background-color nscollectionview
3个回答
5
投票

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

  1. NSScrollView的背景颜色:

enter image description here

  1. NSCollectionView原色:

enter image description here

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


5
投票

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

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

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设置背景视图,则忽略此数组

你可以试着把NSViewframe零作为backgroundViewNSCollectionView

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.