iOS 5 app with 4 inch screen - iphone

I'm writing an app that needs to target a minimum of iOS 5.
I've also written it so that it is compatible with the iPhone 5 4" screen.
I'm not 100% certain but I think I saw something around that said Apple will not allow apps to use the full 4" screen without being a minimum target of iOS 6.
i.e. if you target iOS 5 and your app uses the 4" screen then the app will be rejected.
Is this true? If so I'll have to decide what to sacrifice.

No this isnt true, you can set the minimum iOS version in the build settings to 5.0, and still support iphone 5 screens.
The sort-of-reverse is true, though. If the Base SDK isn't 6.0, then you can't use the iphone 5 screen size (which would be impossible anyway since no iphone5 can use < 6.0).
There are some sacrifices you have to make though, like you can't use autolayout if you also support ios5. You'll have to handle the varying screen size manually.

Related

How to keep iPhone 4- formatting on iPhone 5

So I am developing apps for the iphone 4s-, but I want iPhone 5 users to be able to access the app as well.
I want to make it so that if the user has an iPhone 5, it just has the little black bars at the top and bottom that you see in some other apps (I basically want to keep the formatting for the 3.5 inch screen.
Is there a way to test iPhone 5 on the simulator?
You should try deleting the default launch screen of the 4" display from the app summary. I think that shall do it
Is there a way to test iPhone 5 on the simulator? Because I can only run 4
iPhone (Retina 4-inch) equals the iPhone 5

Is it possible to test your app on iPhone 5 using the 3.5 inch form factor in Xcode?

When I am building an application for both the iPhone 3.5 inch & iPhone 4 inch, is it possible to test both form factors using the iPhone 5, instead of having to keep switching between phones?
I know that the iPhone 5 automatically puts black bars beneath and above any app that is not iPhone 5 compatible, but it would be great to be able to test apps in that way.
I doubt it's currently possible, as I haven't found any options for that in Xcode myself, but it would be awesome if Apple would add that feature. Thanks in advance for any responses.
If you remove the Default-568h#2x.png from the project (just remove it's target membership) and clean the project you app is presented in 3.5 inch mode.
There is not way the set the run parameter too force it in 3.5 inch mode. You could also just connect both iPhones to you development machine and when you want to debug the app select the device you want to test on.
I think it should be enough to not supply a Default-586h#2x.png launch image. Just have Default.png and Default#2x.png, then the app should be letterboxed on the 4" simulator.

How to make iPhone4 and below version app compatible for iPhone5?

I have an application in iphone market which works for iPhone 4s and lower version. So now iPhone 5 has been launched which bigger size screen, my question is what all changes i have to do in my application so that it will be compatible with iPhone 5 also.
1) Do i have to rebuild my app for iPhone 5?
2) Do i have to make changes only in UI ?
3) Will the iPhone 5 will its make it compatible?
Your valuable replies will help me a lot. Thanks in advance.
Here is my answers,
1) Do i have to rebuild my app for iPhone 5?
If you want to utilize the complete screen space, you can add Default-568h#2x.png and rebuild the app and release it.
2) Do i have to make changes only in UI ?
You can utilize the complete screen space for iphone 5. You can code for screen modifications in case of other iPhones.
3) Will the iPhone 5 will its make it compatible?
Yes. It will make it automatically compatible. It will add a black strip on top and bottom to compensate for the extra space in the screen unless you add Default-568h#2x.png.
If your app uses the standard UIKit provided by Apple, you only need to add a 4 inch launch image to your app, and it will automatically resized itself. But if your app using custom controls or graphics-heavy like in games, you might want to adjust the images and take advantage of the larger screen.
You also have to make sure the methods you used do not deprecated on iOS6 to prevent the app from crashing. Some references if you need further reading.
To make older app compatible with iPhone 5 You need to look for Following things.
Latest Xcode version 4.5.
Open your project and select Upgrade settings for new version.
Add Default-568h#2x.png for new resolution .
For UI you have to change your xib's object autoresizing property.When you select View Go to
inspector and select size property It will show you None, Full Screen, Retina 4 options . Set autoresize property for all your Buttons , labels and check xib for retina 4 and None both.It is same like you set it for Landscape and portrait .
5.Some other changed will be in code because some method has been depreciated for ios 6.0.
6. After doing all this .You can run it on iphone 5 simulator for testing.
I have an app that was using GLKMatrix3 and its supporting functions. I found that the GLKMatrix3Multiply function would always crash on iPhone 5 hardware. Easy to workaround using GLKMatrix4 instead, but the point is that I would never have found the problem without actually trying my app on iPhone 5 hardware.
I was told to file a bug for the GLKMatrix3 problem, so maybe this will be fixed. But the code runs just fine in the iOS 6 simulator.
I learned from this that, whether or not you need to rebuild your app for iPhone 5, you do need to at least run your app on a device before advertising support for that device.

Support for iPhone 5 screen size in apps with sdk older than 6.0

I have an app which is developed with older SDK i.e. 5.0. I want to modify my app so that it won't be run in letter boxed mode on iphone 5.
But at the same time I won't be switching to autolayout feature and use sdk 6.0.As my app has many hardcoded rects and runtime aligned UI elements I will modify my app to check the screen size and make special coding for iPhone 5.
Is it possible and are there any chances of app rejection in case I go by this way of not upgrading to SDK 6.0 and not using autolayout features?
You will not get rejected for not using AutoLayout. That is a feature available for you to use if you so wish. It is not mandatory for iPhone 5.
In regards to the iOS 6 SDK, I highly suggest building against it. There is no guarantee that Apple will continue accepting applications with a Base SDK of iOS 5 or below in the future, so you should prepare now.
As for the iPhone 5, you can still build against iOS 6 SDK, and not support the iPhone 5 'tall mode'. To support tall mode, you need to include Default-568h#2x.png, which will indicate that you have provided a launch image for iPhone 5, suggesting that the application supports it too. If you don't include this image, then the app will run in a letterboxed mode, emulating the display of on iPhone 4S or below.
If you do wish to support the iPhone 5, and you want a way to determine whether you're running on it or not (for your special cases), you can use a #define to check (place in a header file that is imported everywhere, possibly a header included in your .pch).
#define IsRunningTallPhone() ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone && [UIScreen mainScreen].bounds.size.height == 568)
Then throughout your app, if you need to check if you're running on iPhone 5, call IsRunningTallPhone() (or call it whatever you think is best)

Minimum iOS version for retina 4" support

Is there any minimum iOS version restrictions on using full-sized retina 4" screen? May I just use autoresizing masks and iOS 6 SDK for building an app with deployment target < iOS 6, which will run fullscreen on new retina display?
Building an app that takes advantage of the 4" screen requires Xcode 4.5 with a Base SDK of 6.0. The Deployment Target can be anything from 4.3 on up to 6.0. You just need to add the new Default.png specific to the 4" screen. Do this on the Summary tab of your project target. That's it. As long as your code properly sizes itself to the screen (regardless of its size) then your app will do what it is supposed to do.