The order of the color channels in a CGImage depends on its alphaInfo and bitmapInfo. The default format for 8-bit images is actually BGRA (instead of RGBA) in many places. Where do you get the image from? What's its bitmapInfo and does it differ between iOS 16 and 17?
You can also access the tip through the configuration. I think you can simply add a button to your tip layout that invalidates the tip when tapped:
Button(action: {
configuration.tip.invalidate(reason: .tipClosed)
}, label: {
Image(systemName: "xmark")
})
Hmm, this is really hard to debug without seeing the actual filters. But if I would need to guess, I'd say the implementation of the ROI callback (passed when calling the CIKernel) is wrong. I can also recommend using a MTKView for displaying a CIImage instead of using Core Graphics. There is a sample from Apple showing how to do that.
The order of the color channels in a CGImage depends on its alphaInfo and bitmapInfo. The default format for 8-bit images is actually BGRA (instead of RGBA) in many places. Where do you get the image from? What's its bitmapInfo and does it differ between iOS 16 and 17?
You can also access the tip through the configuration. I think you can simply add a button to your tip layout that invalidates the tip when tapped:
Button(action: {
configuration.tip.invalidate(reason: .tipClosed)
}, label: {
Image(systemName: "xmark")
})
Hmm, this is really hard to debug without seeing the actual filters. But if I would need to guess, I'd say the implementation of the ROI callback (passed when calling the CIKernel) is wrong. I can also recommend using a MTKView for displaying a CIImage instead of using Core Graphics. There is a sample from Apple showing how to do that.