macOS 上的 SwiftUI,如何在 Button 上使用自定义图像符号?

2024-01-06

请仔细阅读问题,这是一个 MAC 应用程序,systemName 在 mac os 上不可用

我正在尝试在 macOS 上使用 swiftUI 构建一个简单的应用程序,但是在显示某些图标时遇到一些问题。

我现在到处都读到,您需要下载 SF Symbols 应用程序并自己导出符号才能使用它们,所以我这样做了,然后将导出的符号添加到.xcassets现在我正在尝试创建一个带有图像的按钮,所以这里是代码:

import SwiftUI

struct ActionBar: View {

    var body: some View {
        HStack {
            Spacer()
            Button(action: {

            }) {
                Image("Plus")
                    .font(Font.system(size: 24, weight: .light))
                    .foregroundColor(Color.red)
                Text("Test")
            }
        }
        .frame(maxWidth: .infinity)
        .padding()
        .background(Color.init(red: 0.8, green: 0.8, blue: 0.8))
    }
}

struct ActionBar_Previews: PreviewProvider {
    static var previews: some View {
        ActionBar()
    }
}

我尝试了很多变体,例如:

Image(nsImage: NSImage(name: "Plus"))

但所有的信息都在那里,包括苹果自己的文档 https://developer.apple.com/documentation/uikit/uiimage/configuring_and_displaying_symbol_images_in_your_ui只谈论 UIImage,据我所知,它是 UIKit 的一部分,UIKit 是 UI 框架的 iOS 版本,有人让它在 macOS 上工作吗?

多谢!

编辑:资产被导入为Image Symbol Set,Xcode 不会抛出任何错误,因为我只是将 SF Symbols 应用程序生成的 svg 直接放在资源上。

编辑2:我刚刚遇到这个post https://forums.developer.apple.com/thread/119331其中指出 SVG 支持很不稳定...我尝试将 SVG 转换为 PNG,但 xcode 不接受 png 作为符号集...所以,我猜这个功能完全被破坏了?这很糟糕...


在 MacOS 中,没有可用的系统映像。但NSImage.Name https://developer.apple.com/documentation/appkit/nsimage/name提供替代选项。这link https://hetima.github.io/fucking_nsimage_syntax/显示大部分MacOS系统默认图标。

这是一个例子NSImage.Name :

Icon(NSImage.refreshTemplateName)

以下是Icon视图定义:

struct Icon: View {
    var image: NSImage.Name
    var body: some View {
        Image(nsImage: NSImage(named: image)!)
            .renderingMode(.original)
            .resizable()
            .scaledToFit()
    }
    init(_ image: NSImage.Name){
        self.image = image
    }
}

P.S. Image https://developer.apple.com/documentation/swiftui/image视图没有名为的修饰符.font()。请检查其文档以了解正确的语法。

Edit:您可以通过以下格式跳过额外的视图。

Image(nsImage: NSImage(name: NSImage.addTemplateName))

NSImage.Names 的列表是here https://hetima.github.io/fucking_nsimage_syntax/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

macOS 上的 SwiftUI,如何在 Button 上使用自定义图像符号? 的相关文章

随机推荐