1

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

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

无法将“某些视图”类型的值转换为闭包结果类型“图像”

4

2 回答 2

3

借助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>]???

于 2021-07-08T16:17:11.597 回答
1

如果一切都失败了,可以选择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)))

于 2021-07-08T15:33:37.840 回答