【问题标题】:Making NSView appearance vibrantDark使 NSView 外观充满活力的黑暗
【发布时间】:2017-12-21 22:15:31
【问题描述】:

我目前正在学习 Swift,我跟随 this tutorial 创建了一个 NSWindow,它继承了 Swift 中 AppKit 的 vibrantDark 属性。我在 WindowController.swift 文件中添加的代码如下:

window?.titleVisibility = .hidden
window?.appearance = NSAppearance(named: NSAppearance.Name.vibrantDark)

我想做的是在我的程序中为NSPopover 实现相同的结果;但是,当我将以下内容添加到我的 LogViewController.swift 文件时,我收到一个错误 - 第一个是“'NSView' 类型的值没有成员'titleVisibility'”,第二个是“不能使用可选链接类型为 'NSView.' 的非可选值。”

view?.titleVisibility = .hidden
view?.appearance = NSAppearance(named: NSAppearance.Name.vibrantDark)

几个posts 已经为NSWindow 解决了这个问题,但我找不到解决NSPopover 的答案。我目前将以下条件设置为在状态栏中单击NSImage 时打开NSPopover

popover.contentViewController = LogViewController.freshController()

我认为将 NSPopover 设置为 NSView 是导致问题的原因,但是——由于我还是 Swift 的新手——我不确定如何诊断这个问题。也就是说,如果有人能指出我正确的方向,我将不胜感激。

【问题讨论】:

    标签: swift macos cocoa nsview nswindow


    【解决方案1】:

    您应该使用NSPopover,而不是NSView

    var myPopover: NSPopover?
    
    myPopover = NSPopover.init()
    myPopover?.appearance = NSAppearance(named: .vibrantDark)
    

    如果你想使用contentViewController

    var popoverViewController: NSViewController?
    
    myPopover?.contentViewController = self.popoverViewController
    

    【讨论】:

    • NSAppearance.Name 是多余的。 myPopover?.appearance = NSAppearance(named: .vibrantDark)。顺便说一句,请不要在 Swift 中使用分号
    • @LeoDabus 我应该把这个放在哪个文件中?
    • @rrod 这些是特定的 NSWindow 属性。 NSView 没有外观或 titleVisibility 属性。您可以尝试设置您的视图窗口属性view.window?.whatever,只要窗口属性不为零(尝试在 viewDidAppear 方法中)
    猜你喜欢
    • 2014-12-14
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多