Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

'init(systemName:)' is unavailable in macOS

Tags:

swiftui

I would like to use SF Symbols in my macOS project. How to implement one?

Button(action: {}) {
  Image(systemName: "star") //Error: 'init(systemName:)' is unavailable in macOS            
}
like image 204
Victor Kushnerov Avatar asked Sep 30 '19 17:09

Victor Kushnerov


1 Answers

It is nativly supporting from the macOS 11 beta or later, then it works as usual, otherwise you have to export a template and import it to the assets catalog, then you can use it as a normal image. So:

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

Another way is to use the symbol directly in the text:

Text("􀈒") // The symbol itself can not be shown on the markdown of the StackOverflow

Demo

Remember that you should embed the font in your application or the destination should have the SF Symbols App installed

like image 65
Mojtaba Hosseini Avatar answered Oct 05 '22 20:10

Mojtaba Hosseini