Transparent NSCollectionView Background

99封情书 提交于 2019-12-09 17:25:37

问题


I'm again struggling with setting NSViews background colors to transparent. I have a NSCollectionView as part of NSClipView which is part of a NSScrollview. My MainViewController has an outlet to the collectionView. With adding the two lines of code and after compiling the background is sometimes transparent but most of the times not:

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

I also tried to select/de-select the "Draw Background" property of the NSScrollView in the IB without any effects. What do I miss here.


回答1:


Ok, after a long evil trial and error phase I found a solution at least for myself. There are two background colors to set in order to have the proper behavior:

  1. the background color of the NSScrollView:

  1. the NSCollectionView primary color:

Both have to be set appropriately. At the point I set both to the same color I got the background I want. With setting only the ScrollView background color there was still the white background when scrolling the items in the CollectionView.




回答2:


I struggled a bit attempting to get my NSCollectionView background "transparent" @JFS solution pointed me in the right direction: and I finally achieved it by setting both the parent scrollView and the collectionView backgrounds:

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



回答3:


To make clear background for NSScrollView, the best option in Swift 4.2 is "Not draw a background". Let's get to view a programmatically example:

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

NSCollectionView has background for sections, so you need to specify colors for sections

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

If you set backgroundColors to nil or to empty array, the background color is set by default to white.

If you set a background view for NSCollectionView, this array is ignored

You could try to put a NSView with frame zero as a backgroundView for NSCollectionView



来源:https://stackoverflow.com/questions/42058337/transparent-nscollectionview-background

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!