How is it possible to use your pre-iOS 7 look and feel for your app? I just upgraded to iOS 7 and I have some apps on the phone that are still using the pre-iOS 7 look and feel. For instance one app is using the old UIPickerView look but it's running on iOS 7.
When I tested running the app that I am developing on the iOS 7 simulator it's using the new UIPickerView "automatically" without me doing any changes.
So I'd rather that my app uses the pre-iOS 7 look and feel until I have upgraded my app for iOS 7.
Here's an image of running Checkmark on iOS 7, you can clearly see it's using the pre iOS 7 keyboard:
That's rather simple: You have to build your app using the iOS6 SDK. iOS 7 detects older apps by checking the SDK against which the app was linked.
You can switch "Base SDKs" in Xcode by selecting the target, switch to the build settings tab, and find the "Base SDK" build setting under "Architecture".
If you don't have an older SDK you may need to use an older version of Xcode (4.6). Rob Napier describes here how to point a newer Xcode to older SDKs.
Note that while many UI elements retain their iOS 6 look, some don't (UIAlertView, UIActionSheet).
If you're using the standard UI components you're going to automatically get the new style on iOS 7, there's no way I've come across to force them to appear as they would in iOS 6. The only way you're going to be able to have them appear as iOS 6 elements is to build custom elements and style them yourself, however there's a risk in doing that that when you submit to Apple they'll reject on the basis of breaking the HIG.
On a device running iOS 7, all of the system UI—such as alerts and notifications—uses the iOS 7 appearance, even if your app is currently using an earlier appearance.
From Apple transition guide:
https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TransitionGuide/SupportingEarlieriOS.html#//apple_ref/doc/uid/TP40013174-CH14-SW1
Not only do you need to build your app using iOS 6 SDK or earlier, you need to use Xcode 4.6 or earlier. I just went through all of this and targeting iOS 6 SDK from Xcode 5 is just not enough.
Luckily you can dual install both versions of Xcode. Just download Xcode 4.6 and drop it in your Applications Folder and rename is to something else
Related
I've upgraded my Xcode to Xcode 8. Now I notice that I cannot run/debug on an iPhone with iOS 7.n.n. I've have read that it isn't supported in Xcode 8. I do know that my app will still work on iOS 7, but if something fails I would like to hang it on Xcode to debug it. So my question is:
Do I still get the bug fixes/improvement that were introduced in iOS 10 when submitting my app with a base sdk setting of iOS 9.3?
Xcode 8 (or even Xcode 7) doesn't include support for iOS 7 simulator, which is what I think you're really asking about.
To pick up the new iOS 10 SDK changes, link against the iOS 10 SDK and then set your target's minimum deployment version to iOS 7.
If you were using analytics, chances are very high that you'll find the number of iOS 7 using customers is incredibly low.
Do I still get the bug fixes/improvement that were introduced in iOS 10 when submitting my app with a base sdk setting of iOS 9.3?
No, of course not. If you do that, you are still an iOS 9 app. You must link against iOS 10 if you want to run natively under iOS 10.
However, you can do that and still be backward compatible to iOS 7. And you can easily test on an iOS 7 device, so the change to Xcode 8 does you no harm.
I have installed the ios 6.1 sdk in xcode 6 and it shows up in my base sdk drop-down.
I selected it and the app builds but when it launches on the ipad (ios 8) it seems to have a very broken apperence as if its trying to use ios 8 sdk. In ios 7 we were able to use the ios 6.1 sdk on ios 7, is this ability totally removed in ios 8?
This is an enterprise applicaiton, and the client is trying to avoid paying from a full refresh to ios 8.
Dropping an old SDK into a newer copy of Xcode is untested and unsupported by Apple, and it's no wonder you're seeing the problems you're seeing.
If you want to support an earlier version of iOS while using the latest SDK, just set the Minimum Deployment iOS version in your target's build settings (as described here in the Apple documentation I've included).
p.s. On the other hand, if you really want to keep using the iOS 6.1 SDK... use the Xcode version the SDK came with. And it should hopefully look proper under iOS 6, and it'll look like an iOS 6 app under iOS 7 & iOS 8.
p.p.s. Your client is cheap.
i created an iPhone app in Xcode 4.6.1 which supports only up to iOS 6.1. i want to run the app in iOS 7. is that possible? thank you.
iOS 6 apps run on iOS 7 devices. If you want to "convert" just launch the app in xcode 5 and it will ask if you want to migrate to iOS 7, say yes to do so. If you do, you won't be able to take the app back to iOS 6 and xcode 4.
Personally I haven't launched on xcode 5 because there are bugs with it and crashes often
Yes. It is definitely possible.
When you open your Storyboard or .XIB file, Xcode 5 will prompt you if you want to upgrade your User Interface to iOS 7 style. You can choose to ignore that. And your app will run as is on the iOS Simulator.
Hope this helps.
New operating systems (iOS 7) are written as to add new features, while still running programs written in older operating systems, provided the old operating systems are not VERY old, or problems might happen. An iPhone with iOS 7 will run the iOS 6 program, while an iOS 6 phone would not run a program written for iOS 7. You say you wrote the program to support "up to iOS 6.1" - that is probably not precise. Your program supports from 6.1 UPWARDS ;). A phone with iOS 5 would not run your program. In other words, when you set your support to 6.1, it doesn't mean your code will be supported by all iOS's up to 6.1, but that your code can only be supported by 6.1 and up.
Of all the iOS7 apps I have seen, none of them support the earlier versions (6.1 or earlier)
I wanted to know if my apps supports both, iOS6 and iOS7, will my app be rejected?
No. You can support iOS 6 and 7. Just target the latest SDK and set your deployment target to iOS6. If you use APIs that are only available in iOS 7 then you need to check to make sure they exist (respondsToSelector:) prior to calling them or your app will crash on iOS 6, though.
1) No your app is not going to be rejected.
2) You can upload your app with iOS 6 support only.
3) You can upload your app with both (iOS6/iOS7) Supported With setting deployment target 6.1 or whatever you want.
4) If you want to upload app with both iOS 6 and 7 , you have to make some changes in UI because in iOS 7 some UI is going to changed like,Switch,Tabbar,statusbar. So make changes in it.
5) For more information regarding iOS 7 UI https://developer.apple.com/library/ios/design/index.html#//apple_ref/doc/uid/TP40013289
6) For more information regarding integrate iOS 6/7
https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TransitionGuide/SupportingEarlieriOS.html
What exactly does iOS 7 use to determine whether the application should be displayed with the traditional iOS 6 style UI (aka iOS6 compatibility mode), or the newer iOS 7 UI?
If I build our app in Xcode 5, with base SDK set to 7 I get the iOS 7 UI as expected
If I build our app in Xcode 5, with base SDK set to 6 I still get the iOS 7 UI (unexpected, happens on real device and simulator)
If I build in Xcode 4.x, I get the older UI as expected
In all cases, the deployment target is set to 5.
Since our app has fairly custom UI we're not ready to move to the new look of iOS 7 yet. However we do need to make some backend changes to support iOS 7 which we need to release now. Can we still submit apps built with Xcode 4.x and expect them to be accepted?
For the time being, you are able to. Apple will make an announcement when they stop accepting apps built with Xcode 4.x. My company is currently submitting apps with Xcode 4.6 since we do not have a new enough operating system for 5. I suspect it will be at least a few months until they stop.
Running against 6.1 Base SDK should do it.
However, as I discovered yesterday. Anything less than 7.0 Base SDK isn't supported by Xcode 5 (officially) and so it is undefined behaviour.
My app suddenly switched from iOS6 UI to iOS7 UI with no code changes.
In the end I restarted my mac and phone, deleted the app, deleted derived data and reinstalled cocoapods and it was working on iOS6 UI again.
Make sure that you set the Base SDK to iOS 6 in both the Project build settings & the target build settings - that should do the trick. Even though the target settings are supposed to override the project, I found that when just the target was set to 6 - it compiled with 7.
Regarding XCode 5, it's true that it doesn't officially ship with the iOS 6 SDK. However, you can extract it from XCode 4.6 and use it in 5.
You'll find the SDK in the XCode app under:
Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs
Simply copy it from an existing installation of XCode 4.6 or from its .dmg (which can still be downloaded from Apple's website) to the corresponding folder in XCode 5, restart and you should now be able to select it as the Base SDK. Note that you'll have to do this after every update of XCode so you might find it easier to use a symbolic link rather than copying.
We've successfully submitted apps built this way to the App Store although as has been said before me, it would be a good idea to transition to iOS 7 ASAP before Apple makes it compulsory.