Note:
This project, though no longer supported on the App Store, was a fun learning experience that I want to showcase.
I built Zoetrope for iPad using SwiftUI and AV Foundation. It allows users to create playlists of videos, reorder them, loop them, and navigate them frame by frame. I started working on it in 2021, so some of the SwiftUI code may contain workarounds for features not available in earlier versions.
Here are a few key files that demonstrate my approach and style:
WrappedAVPlayerprovides a more user-friendly interface for working with Apple’sAVPlayerand allows easy mocking and custom control of the video player.VideoQueuePlayeris a custom queue player built on top ofWrappedAVPlayerenabling additional playback behaviours like skipping between content and looping items.VideoQueuePlayerTestsshowcases my testing approach, particularly for core application functionality. Although the dependency onAVPlayerItemin the tests could be improved, it doesn't impact the confidence I have in the tests.PlaylistDetailViewandPlaylistDetailViewModeldemonstrate how I separate view and logic, with corresponding tests inPlaylistDetailViewModelTests.
-
Install bundler:
sudo gem install bundler. Bundler is a Ruby tool that manages Ruby packages, known as gems. -
Run
bundle updatewhich will download any gems declared in the Gemfile.
Note: When using Fastlane commands, adding bundle exec beforehand means that you’ll get the exact version of a gem that you specified in your Gemfile, instead of a different version installed elsewhere on your computer.
Here is the old support page.
