Mobile Molecular DataSheet landscape mode on iPhone

The next major release of the Mobile Molecular DataSheet for iOS will be version 1.5, and it will include quite a few new bits, including the basic linear pipelining feature, as well as a major new service that I’ll describe later. The change that affects all of features is the migration to iOS 7, but perhaps more noticeably, when the app is used on the iPhone (or iPod) form factor, it now allows landscape mode, if you tilt your phone sideways.

Currently versions of MMDS allow either landscape or portrait mode for the iPad form factor, but for iPhone, it locks the orientation into portrait. This is not so bad, because most people hold their iPhones up most of the time anyway, but there are some situations where sideways is better (e.g. editing reactions is nicer when the layout is left-to-right). The reason it has stayed that way for so long, while other apps allow both (e.g. SAR Table), is because the menu system used on the front page took up too many vertical pixels. Now that the menu system is icon based, that is no longer a showstopper, and hence, now landscape is allowed.

The other nicety is that the status bar is back, and merges with the translucent overlay of the header block. And in landscape mode on the iPhone, the status bar goes away: those vertical pixels become more precious. On the iPad, it sticks around in both forms.

As you may have read (or personally experienced), the programming API for iOS 7 introduced quite a few little gremlins, in addition to a radical overhaul of the look’n’feel of the default Apple widgets, which meant that when previously making use with your own graphical theme + Apple’s graphical theme looked quite good, chances are after iOS 7, it looked quite horrible regardless of whether you like the changes or not. But more immediately, there are two main urgent action items: first is the way the status bar is handled: it is now something that hovers over the main view, rather than reducing the screen height by 20 pixels. This doesn’t sound like a big deal, but it means that all of the layout logic, for every single view, has to be modified. This only takes about 20 lines of code per app + 10 lines per view, but that adds up to a fairly big task considering how many apps I’ve built, and how many view classes they use.

Good times…

The second thing is that some API functions have been deprecated and now generate a warning. The deprecations are really arbitrary, in my opinion; if there is a genuinely good reason to discontinue these common, important, useful functions, and replace them with really obtuse and inconvenient equivalents (which have to be wrapped in an intermediate library call because they’re so painful to use), then it’s certainly not obvious.

Because the MMDS app is the biggest codebase of all my products, and it is wrapped up into the MMDSLib library which is in turn baked into all of my other apps, I have been taking a backwards approach to upgrading everything to iOS 7: start with the smaller apps, knock them all out, and only then tackle the big one, and its library. Because once the core library is upgraded, everything else has to be fast tracked.