1

Context

How my app looks in iOS 7 simulator in Xcode 5.0

I previewed an app built for iOS 5.1 in Xcode 5.0, and ran it in the iOS 7 simulator. A bunch of stuff had changed/"looked weird".

Examples:

  1. I'm using a UINavigationControllerand had set its navigationBar color to be black using: self.navigationController.navigationBar.tintColor = [UIColor blackColor], however when I ran it in the simulator the navigation bar is now a translucent, greyish color
  2. I have a number of buttons on the home screen, in iOS 6 these were pushed down by the navigation bar, in iOS 7 this is not the case, and they are moved up the screen and sit behind the nav bar.

The list could go on. I realize this is because of the updates to iOS 7 with "core" framework libraries such as UINavigationController.

How my app looks running on an iPod touch (5th gen) running iOS 7 beta

When I ran the same app on my iPod touch (HOWEVER in this case, the app is downloaded from app store, having been published for iOS 5), it looks pretty much the same as it did in iOS 6, the nav bar is black, the buttons are in "the right place" on the home screen etc.

Question

I assumed that when the app is using a navigation object such as UINavigationController it looks to find that library on the device, rather than having that library packaged within the app? I guess this is not the case. Could someone explain to me what libraries are accessed on the device and what come pre-packaged with the app, and explain a little more in-depth the mechanics of the above.

My understanding is that when previewing the app in Xcode, Xcode is bundling the iOS 7 libraries with my app and thus there are fairly dramatic changes. When I preview the app on iPod touch because I'm using the public version of the app, that comes bundled with iOS 5/6 libraries it looks the same.

drc
  • 1,905
  • 4
  • 22
  • 28
  • See my question which is related to what you're asking: http://stackoverflow.com/questions/13118783/why-do-ios-sdk-and-ios-operating-system-version-affect-each-other-or-what-is-a – Krumelur Aug 14 '13 at 20:32

1 Answers1

4

The issue here is that Apple's trying to be a little careful that existing, already published apps don't break when users upgrade their operating system, so the runtime libraries are checking which version of the SDK your app was built with and modifying its behavior based on that information. Building against the latest SDK, they don't make allowances for backwards compatibility, because they want you to update your apps.

The libraries aren't bundled with your app. They're packaged with the OS—this allows Apple to choose what behaviors get universally updated; which get the backward-compatibility treatment; and which are unchanged.

Seamus Campbell
  • 17,816
  • 3
  • 52
  • 60