【问题标题】:How to remove translucency that appairs on some parts of a NSTableView?如何消除在 NSTableView 的某些部分出现的半透明性?
【发布时间】:2017-03-06 14:52:54
【问题描述】:

我正在开发一个带有 Storyboard 的 macOS 项目,其中我有一个包含 NSTableView 和其他一些控件的自定义视图。

在 viewWillAppear() 中为 customView 背景着色:

backgroundCustomView.layer?.backgroundColor = NSColor.white.cgColor

问题是 NSTableView 的项目出现了,里面有一些半透明的部分。

我希望 NSTableView 显示时没有任何半透明(这是因为我在 NSTableView 下放置了一个自定义视图)。

我试图在 IB 中更改所有我认为可能相关的选项,但没有任何运气。

PS 项目之间的不连续半透明是由单元格间距选项引起的。

【问题讨论】:

    标签: xcode nstableview macos-sierra translucency


    【解决方案1】:

    您需要指定您认为需要一个图层作为其后备存储

    backgroundCustomView.wantsLayer = true
    backgroundCustomView.layer?.backgroundColor = NSColor.white.cgColor
    

    更多信息请访问wantsLayer 财产文档page

    【讨论】:

    • 谢谢阿道夫,我添加了声明,但不幸的是 NSTableView 继续显示该外观。也许我在 IB 做错了什么。我在问题中忘记提到的是,该应用程序作为状态栏项运行,并且视图在菜单栏中以 NSPopover() 的形式打开。很抱歉错过了信息。
    • 做同样的事情,但现在使用主视图(NSViewControler 的视图)。像 self.view.wantsLayer = true
    • 非常感谢阿道夫提供的信息。同样实现这一点,我无法禁用透明度。我检查了这个文件,但它似乎不适用于我的情况developer.apple.com/reference/appkit/nsvisualeffectview
    • 我不知道这是否有用,反正我在 ViewController 上检查了这个:“let a = self.view.allowsVibrancy”,它返回“false”。
    • 最后机会 ;) self.view.layer?.backgroundColor = NSColor.white.cgColor
    猜你喜欢
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    相关资源
    最近更新 更多