我正在尝试从以下位置加载文件xcassets
to an NSImage
,其中资产名称是 logo。
我试过这个:
let logoIcon = NSImage(named: "logo")
但我不断收到此错误:
无法将“String”类型的值转换为预期的参数类型“NSImage.Name”
我查看了 Apple 开发文档,据我所知,这是正确的。但由于某种原因,我不断收到错误。
我正在尝试在 macOS 上执行此操作,如果这会有所不同的话
EDIT:
所以我正在尝试制作一个顶部菜单栏应用程序。
我已经调整了代码,以便将图标加载到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
}
}
根据这个答案苹果开发者论坛: https://forums.developer.apple.com/thread/80627
...似乎 NSImage(named: String) 已在 Swift 4 中被 NSImage(named: NSImage.Name) 取代。
因此,按照答案中的建议,您可以创建 struct NSImage.Name 的扩展:
extension NSImage.Name {
static let logo = NSImage.Name("logo")
}
并以这种方式使用它:
let logoIcon = NSImage(named: .logo)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)