'Create "Invisible Ink" effect in Swift or SwiftUI

I'm trying to create an "Invisible Ink" animated view, like the one existed in Messages app.
As I could see, Apple have a framework for it called CKInvisibleInkImageEffectView but it's private.

I was able to get a similar result using the private one, but I'd like to create it from scratch or using an open source framework.

Result using the private API:

class ViewController: UIViewController {

  @IBOutlet private weak var contentView: UIView!

  override func viewDidLoad() {
    super.viewDidLoad()
    updateUI()
  }

  private func updateUI() {
    if let invisibleInk = getInvisibleInkEffectView() {
      invisibleInk.frame = CGRect(origin: .zero, size: contentView.bounds.size)

      contentView.addSubview(invisibleInk)

      invisibleInk.layer.cornerRadius = invisibleInk.bounds.height / 2
      invisibleInk.backgroundColor = .systemBrown
      invisibleInk.layer.masksToBounds = true
    }
  }

  private func getInvisibleInkEffectView() -> UIView? {
    dlopen("/System/Library/PrivateFrameworks/ChatKit.framework/ChatKit", RTLD_NOW)
    let invisibleInkView = NSClassFromString("CKInvisibleInkImageEffectView") as? UIView.Type
    let view = invisibleInkView?.init()
    return view
  }
}

demo

Effect in Message App I would like to implement:

enter image description here

Anyone knows if there is any open source framework or how to create it in Swift or SwiftUI?

Thanks



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source