有没有办法在macOS SwiftUI开发中使用旧金山符号?

时间:2019-09-24 10:34:36

标签: macos swiftui

请参阅问题标题。据我所知,在macOS项目上尝试使用NSImage(systemName: String)语法时,它不支持。具体来说,我试图在工具栏项上使用它。

7 个答案:

答案 0 :(得分:7)

SF Symbol现在可用于 macOS 11

SF符号在iOS 13和更高版本,macOS 11和更高版本,watchOS 6和更高版本以及tvOS 13和更高版本中可用。

这是您的用法:

NSImage(systemSymbolName: "hammer", accessibilityDescription: nil)

如果要支持macOS 10.15及更低版本,则必须使用SF Symbols Mac应用程序并将该符号导出为SVG,然后将其导入回到Xcode项目中的资产文件中。您可以从here获取该应用。

答案 1 :(得分:3)

macOS尚不支持SF Symbols(尚未)

但是您可以下载SF Symbols App并将所需的符号导出为独立图像。

答案 2 :(得分:1)

SF符号在macOS上不可用。根据Apple的人机界面指南:

  

您可以在运行iOS 13和更高版本的应用程序watchOS 6中使用SF符号   和更高版本,以及tvOS 13和更高版本。

答案 3 :(得分:0)

重要 在使用下面的代码之前,请阅读本文How to support San Francisco Fonts on old iOS app and macOS

Button(action: {}) {
  Image(systemName: "star")            
}
我为macOS制作Image,如下所示

enter image description here

这就是在macOS上的样子

enter image description here

对于剪切/粘贴:

import SwiftUI

#if os(macOS)
struct Image: View {
  let symbol: String

  init(systemName: String) {
    self.symbol = [
      "speaker":      "?",
      "speaker.fill": "?",
      "star":         "☆",
      "star.fill":    "★"
      ][systemName] ?? "?"   }

  var body: some View {
    Text(symbol)
  }
}
#endif

答案 4 :(得分:0)

您还可以使用以下工具将符号从SF Symbols应用程序导出到SVG并将其转换为SwiftUI Shape:

答案 5 :(得分:0)

如果您的macOS版本是低于macOS 11

  1. 下载符号并导出所有符号https://www.xaprb.com/blog/2010/05/09/how-to-tune-mysqls-sort_buffer_size/

  2. 在Xcode项目中选择Assets.xcassets

  3. 将iconset文件夹作为新资产拖动到Xcode中的Assets.xcassets https://github.com/davedelong/sfsymbols

答案 6 :(得分:-1)

尚无法在macOS上使用SF符号。但是,您可以将此扩展名用作macOS的后备版本,因此您的代码将在多个平台上运行。

extension Image {
    init(systemName: String) {
        self.init("YOUR FALL BACK IMAGE(s)")
    }
}