20 lines
743 B
Swift
20 lines
743 B
Swift
import AppKit
|
|
|
|
/// 网络页面共用的包内 SVG 缓存,不依赖账号登录界面。
|
|
@MainActor
|
|
final class LogoCache {
|
|
static let shared = LogoCache()
|
|
private var images: [String: NSImage] = [:]
|
|
|
|
func image(named name: String, template: Bool) -> NSImage? {
|
|
// 同一 SVG 会同时用于彩色页面和单色菜单栏,模板属性必须分别缓存。
|
|
let key = "\(name):\(template)"
|
|
if let image = images[key] { return image }
|
|
guard let url = Bundle.module.url(forResource: name, withExtension: "svg", subdirectory: "Logos"),
|
|
let image = NSImage(contentsOf: url) else { return nil }
|
|
image.isTemplate = template
|
|
images[key] = image
|
|
return image
|
|
}
|
|
}
|