【问题标题】:Transparent NSCollectionView Background透明 NSCollectionView 背景
【发布时间】:2017-06-22 20:05:27
【问题描述】:

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

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

我还尝试在 IB 中选择/取消选择 NSScrollView 的“绘制背景”属性,但没有任何效果。 我在这里想念什么。

【问题讨论】:

  • Cocoa 不如 UIKit 好。然而,这只是创建一个子类的问题。
  • El Tomato,感谢您的回复。我需要子类化什么,为什么?谢谢。

标签: swift background-color nscollectionview


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    1. NSScrollView的背景颜色:

    1. NSCollectionView 原色:

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

    【讨论】:

      【解决方案3】:

      要为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 零作为backgroundView 用于NSCollectionView

      【讨论】:

        猜你喜欢
        • 2020-08-17
        • 2011-03-08
        • 2021-09-20
        • 2019-02-07
        • 2020-10-15
        • 2010-10-20
        • 2011-02-01
        • 2013-12-10
        • 2013-07-31
        相关资源
        最近更新 更多