我正在尝试将文件从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
}
}
根据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)