3D tilt with a dynamic shadow, like widget previews in iOS. SwiftUI & UIKit.
In Xcode: File → Add Package Dependencies → paste URL:
https://github.com/sparrowcode/PerspectiveKit
WidgetPreview() .perspective(.widgetAnimatable)
// Content goes into contentView, like in UIVisualEffectView let perspectiveView = PerspectiveView(config: .widgetAnimatable) perspectiveView.contentView.addSubview(widgetPreview) // A single rounded card with a background gets a cheaper shadow from its shape widgetPreview.layer.cornerRadius = 22 widgetPreview.clipsToBounds = true // Tilt off and on with a transition perspectiveView.setTilted(false, animated: true) perspectiveView.setTilted(true, animated: true) // Start the transition later perspectiveView.setTilted(true, animated: true, delay: 0.3) // Appear: grayscale right away, color returns together with the tilt perspectiveView.setTilted(true, animated: true, fromGrayscale: true, delay: 0.3) // Without animation perspectiveView.isTilted = false
// .widgetStatic tilts without animation. Every value is configurable var config = PerspectiveConfig.widgetAnimatable config.angle = 14 config.corner = .topLeft config.animation = PerspectiveAnimation(duration: 10, direction: .counterclockwise) config.shadow?.opacity = 0.4
