Using storyboards in xcode and the app store - ios

I am in a process of learning ios development. I am beginning to learn storyboards and i found out that its only IOS 5 compatible. I searched here and found some answers but i wanted to find out if it make sense at this point to use storyboards. How does application behave that requires 5.0 in the app store? Does it show up for people that have 4.3 and lower? When i look through new application i don't see any that says 5.0 required in the description. Does that mean most people do not use storyboards to develop apps yet?
Thanks in advance!

story board is available in SDK 4.2 with which you can build for iOS 5, you can certainly set your deployment target to 4.x and it will work like a charm..!!
Updated : as #FirozeLafeer told, I confirmed my knowledge that he is right - XCode displays a message that "storyboards are unavailable on iOS 4.3 or prior"
From Apple: Storyboards are supported in iOS 5 and later and are enabled by default for new projects. If your app must run on earlier versions of iOS, though, you cannot use storyboards and should continue to use nib files.
Source: https://developer.apple.com/library/ios/#documentation/iphone/conceptual/iphoneosprogrammingguide/AppDesignBasics/AppDesignBasics.html

Related

App developed in Xcode for native iOS

We have our native iOS app developed in Xcode and now software developer is saying that we should upgrade our code to Xcode 9 as we may face issue with the new release on the App Store if we continue using Xcode for development. I would like to know if this is a fact, since I am not from iOS development and I don't know if this is a fact.
Any help in this regarding or a pointer to documentation would be appreciated.
Appstore won't reject your app because compiled with version 8 but as your developer says, It will be better approach to compile the project with latest version of Xcode.
In addition, with iPhone X release, Apple probably look into support for iPhone X so If you send a new version without iPhone X support, It may be rejected and for iPhone X support, you need to use Xcode version 9 or later.
Apple Xcode Support:
You should use the latest version of Xcode available on the Mac App Store to submit your apps, or when available, the latest GM seed release from the Downloads page. For more information, read the App Distribution Guide.
Note: If your source codes are written fully with Objective-C then compile won't be problem because with Xcode 9 nothing changed on Obj-C side. However, If you have a swift code It may needed to be updated to Swift 4.
To contrast the other posters here: I'd say it depends. Right now, iTunes Connect accepts updates/uploads for apps built using Xcode 6 (six). There is no hard technical requirement to use Xcode 9 today, and there isn't going to be one in the forseeable future. 2019/2020, maybe, but by then we'll likely also have Xcode 11 or 12.
That said, there are many reasons to actually switch to the most recent Xcode release rather sooner than later, not the least of which is being able to target the current iOS version, iOS 11 and make your app work correctly on the new iPhone X.
Yes, your developer is absolutely right.
General Suggestion: Your project/app source code should be compatible with latest technological upgrades.
Why should you move your app development on Xcode 9?
Here are several useful stack over flow discussions (questions and answers), explaining, new changes with Xcode 9.
Xcode 9 Release Notes
iPhone-X interface support - Safe Area of Xcode 9
Swift 4 - Code migration from Swift 2.x to Swift 4
Face-Id Authentication (If you have used biometric authentication)
Facebook integration IOS 11 & FBSDKShareDialog not working on IOS11
Navigation Controller and Navigation Bars
Apple releases a new version of Xcode every year, while it also removes the functionality in iTunes Connect to upload builds from older Xcode versions. So, to be brief, your developer is right!
Source: App Store - Submissions

run xcode 5 and iOS7 changes in older version

We are working as a team and my partner had made changes to support iOS 7 and Xcode 5.
Now the problem is I have installed Xcode 4.6 in my system. His code is not supported in my Xcode. So I am not able to run this project in my system. I don't want to move to Xcode 5.
Is there any other way that I can still run this project in Xcode 4.6 ?
Let me know if you need to know anything else.
Tell your friend using Xcode 5.x to change the Interface builder document -> Opens in to Xcode 4.6 of your storyboard, to any storyboard file on the project.
This will enable you to open the project in Xcode 4.6. However i wont recommend you to use Xcocde 4.6.x since apple want you to use Xcode 5.x, actually starting Feb 1 2014 Apple would reject apps that won't be submitted with Xcode 5.x and optimised for iOS 7. Here is a link to that announcement.
Another thing important to mention is that you won't be able to test the project on iPhone 5s or compile to arm64 (for better performance on supported devices).
According to Apple
Starting February 1, new apps and app updates submitted to the App
Store must be built with the latest version of Xcode 5 and must be
optimized for iOS 7. Learn more about preparing your apps by reviewing
the iOS Human Interface Guidelines.
Apple Announcement
So anyhow you have to change your development to Xcode5. Better start now to change you development environment to Xcode5.
Apple suggests developers to develop with the latest environment. Tats why apple announces the Betas to test our app early when a new OS comes.
I too faced a similar kind of issue. You need to create a new storyboard file with Xcode 4.6 and use that storyboard for further changes. There's no other way to resolve your issue.

targeting iOS5 - will it work on iOS6 also?

Hello I am beginner with these things and would appreciate nice explanations
that would dismiss my doubts.
If I target my app for iOS 5 -- does it mean users who have iOS 6 and iOS 7 can
also use it? Anything I should watch out for?
There are two primary settings used for your targeting your builds:
Base SDK & Deployment Target.
The Base SDK = What are the latest features I want available in this app?
The Deployment Target = What is the earliest OS I want to be able to run this app?
So, if you have both of these set to iOS 6, the user must have iOS 6 to install or run the app.
If you have a Deployment Target of iOS 5.0 and a Base SDK of 6.0 that means it'll install and run in iOS 5.0, but you need to be careful to branch your code and not use any iOS 6.0 features if the user is running on an iOS 5.0 device.
Yes, the target is the minimum version version that the app can run on. That doesn't mean that the app will work properly on newer versions and you really need to test to be sure. If you're creating a new app think carefully about which older versions to support.
If you target your Application for a lower iOS version, anyone with the version number you target AND HIGHER and access the application. Anyone LOWER than the one you target will not be able to download and use the application.
Everything will work fine, however there are certain features that are only available in iOS6 and iOS7 such as UICollectionView is only available in iOS6 and above. Fortunately you can test the different OS's in the simulator, it will make you life easier and you will be able to see if your application breaks running a different OS.

Auto layout backwards compatibility in iOS

I couldn't find in Apple's documentation (Cocoa Auto Layout Guide) what is the lowest iOS version that supports this feature, nor any posts related to iOS... maybe it only depends on Xcode version, and not on iOS version? I need to develop an iOS app that should be compatible from the latest iOS version down to 4.3
Thanks
One way to find this out quickly is to set the deployment target of the XIB/Storyboard file directly. By default, it's set to the latest SDK version. Open the XIB/SB, and in the File Inspector (right panel), choose 4.3 (or whatever you like) as your deployment target.
If Auto Layout is enabled, Xcode will show an "Illegal Configuration" error for that file:
As you can see, it's iOS 6+ only. Auto Layout uses new APIs at runtime, so using the latest Xcode version does not help, and you cannot use Auto Layout conditionally in a XIB. You could, however, have separate XIBs for different system versions, but it sounds like a lot of (maintenance) work.
Setting the correct deployment target has another benefit: You will be warned if you use classes that have been introduced later than your deployment target.
Autolayout was introduced at WWDC 2012 and is supported starting on iOS 6. It'll definitely not work with iOS 4.3.
I strongly recommend you to think about if you really need to support iOS 4.3 these days. We're probably very close to have iOS 7 now and you'll be years behind (technologically speaking) supporting iOS 4.3. I understand apps that are currently supporting iOS 4.3, but I don't think it's a good idea do start developing an app now with iOS 4.3 support in mind.

How do I specify the default minimum iOS version for new projects?

I'm learning iOS development from 5.0 SDK books as I don't believe any are out for 6.0, I will repurchase these when they do come out though because they are good books.
One thing I'm finding though is that a lot of the basic methods used are now deprecated in 6.0, i.e. UIViewController shouldAutorotateToInterfaceOrientation and UIViewController viewWillUnload, the latter being a little more important if I target < 6.0.
So how do I get Xcode to use 5.0 templates instead of 6.0?
Is your question really about the templates? If it is, you'll have to use a version of Xcode that still develops for iOS 5 SDK. Xcode 4.2 will do this. Earlier versions of Xcode are here:
https://developer.apple.com/downloads/index.action?name=Xcode
If your question is "how can I use Xcode 4.5.x to develop for iOS 5", just set the Deployment Target for the project to 5.0. If you need to test in the simulator, Xcode can download an iOS 5 simulator for you.
However, it's hard to tell what you're really asking, so here are some further miscellaneous comments:
There's no such thing in iOS as BIDViewController. You must be talking about some UIViewController subclass from some particular example.
About shouldAutorotate. It is not "deprecated" in iOS 6; it isn't called at all! You specify rotation in a completely different way in iOS 6 from how you specify it in previous systems.
About viewWillUnload. It is not "deprecated" in iOS 6; it isn't called at all! In fact, your view is never unloaded. This may also be true for iOS 5, only we weren't told; but that's just a guess, based on something I thought I remembered from a WWDC 2012 video.

Resources