Episode #34

Upgrading to iOS 6 and iPhone 5

7 minutes
Published on September 20, 2012

This video is only available to subscribers. Get access to this video and 572 others.

Now that iOS 6 is out, and the iPhone 5 is only a day away, it is important to update our applications to make sure there are no issues. In this episode, I convert a rudimentary application to support the taller screen of the iPhone 5 and support iOS 6.

Episode Links

Supporting the taller iPhone 5 screen

It turns out that all you need to provide is a launch image of the appropriate size. Xcode 4.5 should provide you a build warning saying that you're missing a Default-568h@2x.png image. If you allow it, Xcode will provide you with a black default view. However, you should replace this with a launch image relevant to your application :)

New Autorotation methods in iOS 6

Note: I didn't actually cover this in the video, however there are some subtle rules regarding rotation in iOS 6.

  • shouldAutorotate and supportedInterfaceOrientations are only called on your rootViewController and any container controllers.
  • The common containers (tab bar, nav bar) will not forward this event to their front-most view controller.
  • You can subclass UITabBarController or UINavigationController to provide this behavior, or.../
  • ...make your rootViewController a container controller that contains nothing but your tab bar or nav bar

As soon as I find an authoritative source for this behavior, I'll link to it here.

TableView Background Views

In a couple of my applications, custom background views were not showing up. You should now use the UITableView setBackgroundView: method.

Other Gotchas

Any 3rd party static libraries you are using might need to be updated to include an armv7s slice. This includes Flurry analytics, TestFlight, Urbain Airship and more. If you want to do some unsupported and unrecommended hackery to do this on your own, you can follow this guide:
Hacking up an armv7s library

If you don't want to do this, then you'll have to wait for an update from the vendor.