nOk*_*nOk 4 qr-code cifilter swiftui
我试图在我的应用程序中生成一个二维码。问题是每当我做图片时,图片只是一个空方块。我将代码简化为基础,以尝试展示我的问题。
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)
Fra*_*gel 11
我想问题在于您CIImage实际上并没有“生产”。你看, aCIImage只是一个需要由 a 渲染成实际位图图像的图像的配方CIContext。
(记录不佳)方便的初始化程序UIImage(ciImage:)仅在您分配图像的目标理解图像的像素UIImage尚不存在并且需要首先呈现时才起作用。UIImageView可以处理这个,但 SwiftUIImage似乎没有。
您需要做的是创建一个CIContext(一次,可能作为您的视图的一个属性)并使用它来将您的条形码图像渲染成这样的位图:
let cgImage = self.ciContext.createCGImage(scaledQrImage, from: scaledQrImage.extent)
self.image = Image(uiImage: UIImage(cgImage: cgImage))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1129 次 |
| 最近记录: |