如何在 SwiftUI 中调整 SF Symbol 按钮的大小?

问题描述

我正在尝试在 SwiftUI 中调整 SF 符号按钮的大小。我试过 .font(.system(size: 60)).imageScale(.medium) 但它不起作用。它仍然有同样的错误。这是我的代码

var buttons: [Button<Image>] = [
    Button(action: {
        print("Add tapped")
    }) {
        Image(systemName: "plus.circle.fill")
    }
]

Cannot convert value of type 'some View' to closure result type 'Image'

解决方法

接受UIImage的帮助。

var buttons: [Button<Image>] = [
    Button(action: {
        print("Add tapped")
    }) {
        let config = UIImage.SymbolConfiguration(font: UIFont.systemFont(ofSize: 60))
        let image = UIImage(systemName: "plus.circle.fill",withConfiguration: config) ?? UIImage()
        return Image(uiImage: image)
    }
]

但问题仍然是你为什么需要这个 [Button<Image>] ???

,

如果一切都失败了,可以选择使用 UIImage 调整 SFSymbols 的大小。如果你不介意让程序更长一点,我建议你使用,

extension UIImage {
    func resized(to newSize: CGSize) -> UIImage? {
        UIGraphicsBeginImageContextWithOptions(newSize,false,0)
        defer { UIGraphicsEndImageContext() }

        draw(in: CGRect(origin: .zero,size: newSize))
        return UIGraphicsGetImageFromCurrentImageContext()
    }
}

调整 UIImage 的大小。因此,您可以使用调整大小的 Image 来初始化您的 UIImage。代码看起来像...

Image(uiImage: UIImage(systemName: "plus.circle.fill")!.resized(to: CGSize(width: 40,height: 40)))