gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 16:30:50 24 4
gpt4 key购买 nike

请仔细阅读问题,这是一个 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"))

但所有信息都在那里,包括苹果自己的 documentation只谈论 UIImage,据我了解,它是 UIKit 的一部分,UIKit 是 UI 框架的 iOS 版本,有人让它在 macOS 上工作吗?

非常感谢!

编辑: Assets 作为图像符号集导入,Xcode不会抛出任何错误,因为我只是将SF Symbols应用程序生成的svg直接放在 Assets 上。

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

最佳答案

在 MacOS 中,没有可用的系统镜像。但是NSImage.Name提供替代选项。这个link显示大部分MacOS系统默认图标。

这是 NSImage.Name 的示例:

Icon(NSImage.refreshTemplateName)

以下是Icon View 定义:

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
}
}

附注Image view 没有名为 .font() 的修饰符。请检查其文档以了解正确的语法。

编辑:您可以通过以下格式跳过额外的 View 。

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

NSImage.Names 列表为 here

关于macOS 上的 SwiftUI,如何在 Button 上使用自定义图像符号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61271693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com