我正在尝试使用init(uiImage:)初始值设定项将UIImage转换为SwiftUI Image。我的 UIImage 本身是从 CIQRCodeGenerator CIFilter 生成的 CIImage 创建的。我在 Xcode 11.1 GM 种子 1 的 Playground 上运行我的代码。这是我的全部代码:
import SwiftUI
import UIKit
func qrCodeImage(for string: String) -> Image? {
let data = string.data(using: String.Encoding.utf8)
guard let qrFilter = CIFilter(name: "CIQRCodeGenerator") else { return nil }
qrFilter.setValue(data, forKey: "inputMessage")
guard let ciImage = qrFilter.outputImage else { return nil }
let uiImage = UIImage(ciImage: ciImage)
let image = Image(uiImage: uiImage)
return image
}
let image = qrCodeImage(for: "fdsa") …Run Code Online (Sandbox Code Playgroud) 我试图在我的应用程序中生成一个二维码。问题是每当我做图片时,图片只是一个空方块。我将代码简化为基础,以尝试展示我的问题。
struct ContentView: View {
@State var image: Image = Image(systemName: "circle.fill")
var body: some View {
VStack {
image
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: 200, height: 200)
.background(Color.green)
}.onAppear {
let myString = "Hello There"
let data = myString.data(using: String.Encoding.ascii)
guard let qrFilter = CIFilter(name: "CIQRCodeGenerator") else { return }
qrFilter.setValue(data, forKey: "inputMessage")
guard let qrImage = qrFilter.outputImage else { return }
let transform = CGAffineTransform(scaleX: 10, y: 10)
let scaledQrImage = qrImage.transformed(by: transform)
self.image = Image(uiImage: UIImage(ciImage: scaledQrImage))
} …Run Code Online (Sandbox Code Playgroud)