jermware.net

gjPace - My First iOS App

gjPace is an iOS app for calculating pace, time, speed, and distance combinations.

gjPace screenshots

This is my first iOS app and is written in Swift, a logical choice given my C# background, with the user interface built using Storyboards.

In March 2017 I was looking for inspiration for an app to develop and decided to recreate one that I used regularly to calculate pace and mile splits to help me improve my running times. That app was Running Pace by Fikes Farm, LLC.

Development started in March 2017 but was put on hold while I watched numerous online iOS Swift development videos and completed the excellent Stanford University Developing iOS 11 Apps with Swift - CS193p Fall 2017 iTunes course until, in March 2019, I started work on the app again.

The feature set of the app is straightforward. Given a specified distance and either a time, pace, or speed, the app calculates the 2 missing values, as well as the cumulative elapsed times for the required split interval. However, the UI is quite complex, especially implementing the auto-layout constraints in Storyboards. With the core functionality of the Running Pace app implemented, I added the ability to record my personal running records. The record types (road, track, and trail) and distances are hard coded in the app and are specific to my running needs.

Recreating Running Pace from the ground up was a great introduction to developing iOS apps, the Swift programming language, and building user interfaces with Storyboards. Given that gjPace is based on an existing app in the App Store, and was created without permission from its developers, it will never be released to the App Store. If you want to calculate running paces then you should download Running Pace, but be aware, it was last updated in 2017, so you may want to seek out a more recent alternative. Pace Me perhaps?

First code cut March 2017, coding proper resumed March 2019, code ‘complete’ November 2019. Numerous tweaks since but unlikely to be anymore unless future iOS versions break the app.