2 Challenges and Solutions
Jonathan Cardasis edited this page 2016-08-15 12:53:55 -04:00

Welcome! Here we have a short writeup on how I completed a few challenges I faced on this project. Enjoy!

Rainbow Track

This one proved to be a bit of a challenge. With no easy way on iOS to have a changing color gradient follow a circle path, so I had to get creative. If a circle with a gradient was so hard to do what's the next best option? Simulate a circle!

In the func drawRainbowCircle(in context: CGContextRef?, outerRadius: CGFloat, innerRadius: CGFloat, resolution: Float) I create a number of squares which are rotated around an origin point to simulate a circle. The max number of squares is 512. The resolution argument specifies a number between 0 and 1 which is multiplied by 512 to determine the number of sub-divisions.

Here's a gif illustrating just how this function works (gray images shown for contrast):

As each sub-divison is created, the hue of the sub-division is slightly changed from the previous division, this will lead to the visual illusion of a gradient effect on a circle. Pretty nifty!

After running multiple tests with XCTest's measureBlock the current implementation was very fast and efficient for generating a high quality (simulated) image.