A simplified DisplayLink abstraction for all platforms (including iOS, tvOS, watchOS, macOS, Linux).
publicfinalclassDisplayLink:Publisher{publictypealiasOutput=FramepublictypealiasFailure=Never}extensionDisplayLink{publicstructFrame{publicvartimestamp:TimeIntervalpublicvarduration:TimeInterval}}| Platform | Implementation |
|---|---|
| iOS, tvOS | CADisplayLink |
| macOS | CVDisplayLink |
| watchOS, Linux | Timer |
Includes a Combine publisher with SwiftUI integration for CADisplayLink.
SwiftUI does not currently provide any API to perform actions on a per-frame basis. This tiny
library simplifies the work of bridging between CADisplayLink and SwiftUI:
import DisplayLink
structMyView:View{@Statevaroffset:CGFloat=0.0varbody:someView{Color.red
.frame(width:40, height:40).offset(x: offset, y: offset).onFrame{ frame inself.offset +=(frame.duration *20.0)}}}