On This Day - iOS Variant
Why this app?.
As part of my Apple learning curve, I followed a tutorial on creating an "On this day in history" application for the Mac. Once complete, it occurred to me that the next logical step was to put the learning I had around the web API it used to use in an iOS app too. It would also give me some challenges in presentation to overcome.
Hence, this app was born. The mechanics of calling a Web API and decoding the response into usable objects was covered in the Mac application, so I was able to copy/paste a lot of that. However, nothing from the UI was going to be of any use to me, so it was a blank canvas.
I decided early on that this was going to be an iPad only app. The kind of data to be displayed could be achieved on an iPhone, but the results would never look good. I needed the extra screen space of a full-screen iPad app. So, that's what I went with.
Key Learning Points
What did I want to achieve?
As with every app I intend to write, I'm looking to get some learning from the code and try out new techniques. This app came with the advantage that I had the API sorted out, so it was a UI specific learning exercise. That said, what I wanted from this included:
- Something that looks good in light or dark mode.
- Master/detail view without messing around with NavigationLinks.
- Parsing of JSON into objects.
- The use of AppStorage and SceneStorage.
- Integrating a web view into an app with some minimal navigation.
One major headache was getting the launch screen to work. It was very simple to create and worked fine. Then I decided I wanted a gradient background so created a second graphic image that I used to fill the background. It looked fine in the preview. In the running app, nothing appeared. No launch screen at all.
There were hints on the web what the problem was, but nothing concrete. In the end, I had to remove the gradient fill image and, lo, the launch screen returned. It turns out that having two graphics on a launch screen storyboard just plain breaks everything. So, I'm now down to using a single graphic for the logo and having a fixed colour background. It doesn't look bad, just isn't what I wanted.
What it looks like
And the end result is...
And this is what I ended up with once the first version was finally complete.
Am I really any good?
Don't take my word for my abilities, take a look at other peoples opinions about me.
One very quickly runs out of superlatives with Steve. He is the cleverest person I know. He is highly innovative, passionate regarding the proper maintenance of agreed standards and protocols and establishes excellent relationships with our clients.
Steve is a rare developer resource who is able to provide a good breakdown of technical solutions for all audiences to understand... Steve understands the importance of project deliverable's both from a client and business perspective and shows a personal pride in ensuring the delivery schedules are met.
I have worked closely with Steve for his time with us and long before we formed our company. His technical ability far out-performs anyone I have known or met in companies we have worked with like IBM/EDS/Cap Gemini
Steven showed a great deal of commitment and skill when he worked with me. His attention to detail, comprehensive documentation and well thought out code, using very impressive technical standards meant that it was always possible to rely on the solutions provided being top notch. Steven is an asset to any company, at any level - if I were able to, I'd love to work with him again.
I have had the pleasure of working with Steven for several years in my role as CTO. He his one to the most multi-disciplined technically skilled developers I have known but what sets him apart is his eye for, and attention to detail, particularly when considering the user experience. I would absolutely not hesitate in recommending Steven.