A button that can render four different playback related modes and animate between them.
The Swift Package Manager is a tool for automating the distribution of Swift code and is integrated into the
Once you have your Swift package set up, adding PlayButton as a dependency is as easy as adding it to the
dependencies value of your
dependencies: [ .package(url: "https://github.com/public-value-tech/play-button.git", .branch("main")) ]
import PlayButton let playButton = PlayButton() // defaults to CGSize(width: 44, height: 44) playButton.playBufferingBackgroundColor = .systemBlue playButton.pauseStopBackgroundColor = .systemBlue playButton.playBufferingTintColor = .white playButon.pauseStopTintColor = .white // Animate the mode update playButton.setMode(.stop, animated: true) // iOS / macCatalyst playButton.addTarget(self, action: #selector(playButtonTapped), for: .touchUpInside)) // tvOS playButton.addTarget(self, action: #selector(playButtonTapped), forsrc="https://raw.github.com/public-value-tech/play-button/main/imaryActionTriggered)
Check out the documentation or just compile it yourself when you add the package to your projects.
The tests mostly consist of snapshot tests. We use a
CADisplayLink to sample some frames from the animation and diff them against reference snapshots. Since there is some expected deviation we add some tolerance to the tests.
You may wonder what's so special about this play button. In this article we describe the difficulties we have faced implementing an interruptible and reversible animation in Core Animation.
|Last commit: 3 weeks ago|