【问题标题】:SwiftUI macOS use SF Symbols 2SwiftUI macOS 使用 SF Symbols 2
【发布时间】:2020-12-22 20:04:27
【问题描述】:

我已经安装了SF Symbols 2,我想使用它的图标而不必复制符号。

有没有办法在macOS上使用它?

据我了解,它仅适用于 iOS

我尝试将图标导出为svg,但整个示例已导出,因此该图标的整个集合。

版本:

macOS: 10.15.4
Xcode: 11.7

【问题讨论】:

    标签: swift macos svg swiftui sf-symbols


    【解决方案1】:

    如果你想在 macOS 中使用 sf 符号,(包括彩色版本)你需要安装 macOS 11 beta 或更高版本,然后它可以正常工作,否则你必须导出模板并将其导入资产目录,然后您可以将其用作普通图像。所以:

    if #available(OSX 11.0, *) {
        Image(systemName: "trash.fill")
    } else {
        Image("trash.fill") // Imported as a supporting format like PDF (not SVG)
    }
    

    另一种方法是直接在文本中使用符号:

    Text("?") // The symbol itself can not be shown on the mark down of the StackOverflow
    

    请记住,您应该在应用程序中嵌入字体,或者目标位置应该安装 SF Symbols 应用程序

    【讨论】:

    • 'init(systemName:)' 在 macOS 中不可用
    • 所以唯一的办法就是把图片从sf导出为svg?我试过了,但它会导出整个图像集,正如我之前在帖子中指出的那样。
    • 您需要像 Sketch 这样的第三方应用程序将每个符号转换为图像,或者您可以使用 SVG 框架。
    【解决方案2】:

    在 MacOS 10.* 中使用 SF Symbols 有点麻烦和限制,你需要像这样通过 NSImage 去

    Image(nsImage: NSImage(named: NSImage.trashFullName)!)
    

    您需要使用 NSImage.trashFullName 作为参数,因此您只能使用 NSImage 中定义的名称

    【讨论】:

    • 我按照你说的试过了,还是不行:Image (nsImage: NSImage (named: "trash.fill")!)
    • 如果我使用 NSImage 图标集,它与 sf 不匹配。
    • @Paul 没错,它非常有限。您需要使用 NSImage.trashFullName 作为参数,因此您仅限于 NSImage 中定义的内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 1970-01-01
    • 2019-11-30
    • 2021-07-11
    • 2021-01-12
    • 2020-08-06
    • 1970-01-01
    相关资源
    最近更新 更多