It’s been quite a long while since the last release, a little over 2 years. I’ve just been terribly busy with a new job, a new wife, and a new son. I had been slowly working on a new update for that whole time but a few things kept me from getting to release. Mostly, I was trying to get the UI updated to work on all screen sizes and devices.
I originally developed the base code for this app more than 10 years ago when the iOS SDK was first released back in 2008 (the first version of this app was called JiSeki released in April 2010 as my final project for college). At that time, there was only one iPhone with one screen size so, of course, I hard coded the UI to fit that screen. Then a phone with a four-inch screen was released so I added a bit of code to detect that and stretch things out a bit if necessary. Then the iPad was released so I added a bit more code to fit that resolution in portrait and landscape.
I realized when I was adding the four-inch code that it would probably be better to just refactor the layout code to just fit whatever the device resolution was. However, at the time it was a lot easier to just leave it alone and add a few exceptions where necessary.
I think it was around 2016 at WWDC that Apple began strongly suggesting that developers should start writing or refactoring code to dynamically layout on any resolution (adaptive layouts). This was because Apple knew they were going to start releasing a wider variety of devices with a lot of different resolutions with and without home buttons in addition to iPad’s multitasking features like split view and slide over.
However, I did not take the hint at that time. It wasn’t until iPhone X was released that it was obvious I would have to rewrite my UI. So, I started slowly working on storyboards using layout constraints in iOS 12. I was about halfway done during the last WWDC when Apple announced Swift UI. That seemed a lot better and easier to use than layout constraints so I decided to scrap what I had been working on and go with a new Swift UI instead.
Unfortunately, it turns out that while Swift UI is indeed great, it’s not quite feature complete and it would be pretty difficult to replace my full UI with just Swift UI. I’m hoping they’re going to add a lot of new features for iOS 14 which we should find out about at this year’s WWDC.
But, what to do about my current UI? Apple released some guidance this year which indicated apps that didn’t support every screen size would be…actually I’m not sure. Certainly they wouldn’t accept new apps or updates like that but I think they may have also been planning to boot current apps out of the store as well if they weren’t compatible. So that meant I had to get the app’s UI up-to-date before the deadline (which was fortunately extended to the end of June 2020, perhaps due to the pandemic).
I was kind of worried about how long it would take to get all the storyboards and constraints done but it turns out I really didn’t have to do that at all. I was just able to get rid of all (well, most) of my hard coded layouts and let iOS 13 handle most of it with my current xib files via a few auto layout tweaks.
It’s not perfect (iPad only works in full screen) and I am still going to have to do a lot of work to get a fully modern, dynamic UI that supports multi-tasking on iPad OS and dark mode and dynamic fonts and on and on. But it fills the screen and finally looks good on notched iPhones and iPad Pros:
Another interesting or strange thing that prevented me from getting the update out as quickly as I wanted was some trouble with the app review process this time.
For some reason, Apple told me that I had to remove the third party app from my app. As a developer, this request didn’t make any sense to me. As far as I know, there is no way to put an app inside another. Of course, kanji Flow is integrated with imiwa? so that you can tap a button to do a dictionary search and things like that. But, imiwa? isn’t in my app. It’s just a link. When you tap it, you leave my app and imiwa? opens. So, I tried to get some clarification but they just said the same thing:
They included screenshots of my imiwa? buttons as well as the download link.
So, in the end I had to change the buttons to a generic dictionary label and, by default, those buttons open the Apple Dictionary instead of the much better imiwa? dictionary. If the dictionary buttons are blue, you know you’ll be getting the built-in dictionary which really isn’t so useful (and is actually kind of buggy and really slow to open in iOS 13; hopefully they’ll fix that in iOS 14). If you already have imiwa? installed on your device then the buttons turn red and you’ll continue to get the same functionality as before.
I guess for new users I just hope they’ll read the App Store text or visit this site to realize they can get a lot of convenient features by installing imiwa? and using that for dictionary lookups and card importing.
For the next update, I probably will be waiting until WWDC this June to see how far along Swift UI has come and hopefully I’ll be able to get the app’s UI fully modernized to work with iPad’s multitasking. I personally can’t wait until I can have the app open in side view on top of my sketching app so that I can do my study sessions with writing practice on a single device. Until then…