PlayButton

1.0.3

An animated play button written in Swift
public-value-tech/play-button

What's New

1.0.3

2022-12-07T21:18:49Z

What's Changed

  • Triangle optical alignment fix + alternative point calculation by @fruitcoder in #4

Credits

  • Thanks to @mischa-hildebrand for the input on more reasonable way to calculate the triangle vertices

Full Changelog: v1.0.2...v1.0.3

PlayButton

build

A button that can render four different playback related modes and animate between them.

Different play button appearances

Installation (Swift Package Manager)

The Swift Package Manager is a tool for automating the distribution of Swift code and is integrated into the swift compiler.

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 Package.swift.

dependencies: [
  .package(url: "https://github.com/public-value-tech/play-button.git", .branch("main"))
]

Usage

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), for: .primaryActionTriggered)

Documentation

Check out the documentation or just compile it yourself when you add the package to your projects.

Tests

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.

How it all started

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.

Description

  • Swift Tools 5.6.0
View More Packages from this Author

Dependencies

Last updated: Tue Mar 19 2024 21:57:11 GMT-0900 (Hawaii-Aleutian Daylight Time)