As much as I admire the elegant design of the iPhone, I find the auto-rotate feature infuriating on a daily basis.

Landscape mode is vital for many apps, especially Safari, and it needs to be easily discoverable. Yet the way it’s implemented in the iPhone removes the feeling of control from the user, violating a fundamental UI principle.

The problems

This lack of control arises from two physical issues:

Firstly, the accelerometer measures the angle of the device relative to gravity, not the user. If you have tried to use your iPhone lying down, you’ll have found that it’s uncomfortable to read text at right angles to your reading position.

Secondly, the iPhone is a mobile device, and mobile devices move. The implementation has to avoid rotating in response to vibration and unintended movement, yet reliably rotate when required. This requires a heuristic algorithm, which is notoriously difficult to get right — especially if it needs to work everywhere a phone might be used.

The implications

There are more serious implications than merely discouraging my bad habit of reading email and browsing the web before I get out of bed in the morning.

Apparent unresponsiveness: The pause before the screen rotates is part of the heuristics, making sure that the phone is in the final position before rotating. This noticeable pause is a harsh contrast with the admirable responsiveness of rest of the iPhone software.

Can’t rotate while walking: If you’re walking while browsing (again, a bad habit) or on a typical British train, rotation doesn’t work at all or happens accidently. To regain control while walking, you have to stop, wait until the phone rotates, then walk again. To regain control on the train… good luck with that.

Frustrating behaviours: For example, if you drop your arm to your side while waiting for a page to load, the phone is now horizontal and when you bring it back up to read, you’ll have to wait for it to rotate back.

All in all, I don’t feel in control of the rotation of the iPhone. Asking around, I don’t think I’m alone.

But everything else about the iPhone is focused on giving the user control over the device to achieve exactly what they want, when they want. So why did Apple implement rotation the way they did?

Reading the mind of the iPhone designers

I can see why Apple have chosen to implement rotation this way, and their reasons are sound.

It makes a great demo, which helps sell devices.

It’s wonderfully discoverable, essential for such a vital feature.

It has zero on-screen UI, removing clutter from the elegant UI design.

Yet I have severe misgivings about the end result.

In my humble opinion

I suppose the ‘obvious’ approach would be to add an option to disable auto-rotate and replace it with a gesture.

As a software designer, I have an instinctive distrust of options. They have to be found by the user, and the implications of the option must be obvious from little more than the label on a checkbox. And of course, it means you have to test your software with it on and off.

Resorting to an option often means that you, the designer, haven’t thought about the problem enough. Giving up and lumbering the user with the burden of deciding between two sub-optimal choices does not result in polished software.

While I respect Apple’s minimally elegant implementation, I have a suggestion which gives the user control over their device.

When the accelerometer senses rotation, the phone displays an icon in the bottom right hand corner of the proposed orientation. If you rotated from portrait to landscape, it might look something like this:

At this point, the user has the following choices:

Touch the icon to rotate the screen to the proposed orientation.

Ignore the icon, and it’ll disappear in a few seconds. A little shake of the phone brings it back.

Hold down for a menu, which allows you to choose what happens for the current context (app, or display within an app) Disable auto-rotate Always portrait Always landscape Always ask



Dragging a stroke across the icon hides it until another rotation is detected.

Only the first choice is trivial to discover, but missing the other options is not going to cause serious problems with the user experience. There’s precedent for all the gestures within the existing UI.

Apps would need a new API to inform the OS of any contexts within the app, but existing apps which didn’t use it would still work well. In addition, the Settings app will need a reset for the persistent choices, just like the reset for location information permissions.

This UI is still discoverable and looks good in a demo, but the user has far more control over their device. A small price for a tiny bit of on-screen clutter?