为什么随着尺寸的增加,QR码在swiftui中显示的非常模糊?



我试图用SwiftUI显示QR码,但一旦QR码的大小增加,它就变得非常模糊。另外,当我导航到QRcode view时,屏幕显示有轻微延迟,不确定这是否是性能问题。

我得到一个日志说

The filter 'CIPortraitEffectSpillCorrection' is not implemented in the bundle at /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Library/Developer/CoreSimulator/Profiles/Runtimes/iOS.simruntime/Contents/Resources/RuntimeRoot/System/Library/CoreImage/PortraitFilters.cifilter.

下面是我如何使用SwiftUI实现QR码视图的代码

struct SampleView: View {

let qrWidth = UIScreen.screenWidth / 2

let context = CIContext()
let filter = CIFilter.qrCodeGenerator()

func generateQRCode(from string: String) -> UIImage {
filter.message = Data(string.utf8)

if let outputImage = filter.outputImage {
if let cgimg = context.createCGImage(outputImage, from: outputImage.extent) {
return UIImage(cgImage: cgimg)
}
}

return UIImage(systemName: "xmark.circle") ?? UIImage()
}

var body: some View {
stack(alignment: .leading){
if let qrImage = generateQRCode(from: "https://www.hackingwithswift.com/books/ios-swiftui/generating-and-scaling-up-a-qr-code") {
Image(uiImage: qrImage)
.resizable()
.scaledToFit()
.frame(width: qrWidth,height: qrWidth)
} else {
Text("Error")
}
}.frame(maxWidth: .infinity,maxHeight: .infinity,alignment: .top)
.padding().background(Constants.WHITE_COLOR)
}
}

尝试添加

.interpolation(.none)

到图像。

最新更新