从Assets加载图像到NSImage不断收到错误,期待NSImage.Name

问题描述 投票:2回答:1

我正在尝试将文件从xcassets加载到NSImage,其中资产名称是徽标。

我试过这个:

let logoIcon = NSImage(named: "logo")

但我一直收到这个错误:

无法将'String'类型的值转换为预期的参数类型'NSImage.Name'

我查看了Apple Dev Documentation,从我可以看出这是正确的。但由于某种原因,我不断收到错误。

我试图在macOS上做它,如果这有所作为

编辑:

所以我想做一个顶级菜单栏应用程序。

我已调整代码,使图标加载到logoIcon但图标未设置在顶部菜单栏中。

import Cocoa

extension NSImage.Name {
    static let logo = NSImage.Name("Logo")

}


@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    @IBOutlet weak var window: NSWindow!
    @IBOutlet weak var statusMenu: NSMenu!

    let statusItem = NSStatusBar.system.statusItem(withLength: -1)


    func applicationDidFinishLaunching(_ aNotification: Notification) {

        // statusItem.title  = "SECRET"

        let logoIcon = NSImage(named: .logo)

        // icon?.isTemplate = true
        statusItem.image = logoIcon
        statusItem.menu = statusMenu

    }

    func applicationWillTerminate(_ aNotification: Notification) {
        // Insert code here to tear down your application
    } 

}
swift nsimage
1个回答
4
投票

根据Apple Developer Forums:的这个答案

...似乎NSImage(名为:String)已被Swift 4中的NSImage(名为:NSImage.Name)取代。

因此,在答案中建议您可以创建struct NSImage.Name的扩展:

extension NSImage.Name {  
    static let logo = NSImage.Name("logo")  
} 

并以这种方式使用它:

let logoIcon = NSImage(named: .logo)
© www.soinside.com 2019 - 2024. All rights reserved.