iPad Retina development - ios

If I currently have an ipad app that supports ios 5.0 how do I go about merging my graphics to fit flush on an ipad 3 & ios 5.1?
I have been looking through these apple docs, but I'm not finding anything about 5.0 to 5.1 conversion. Any tips?
I just want to be able to use high resolution graphics. My current graphics are all pixelated on the 5.1 sim.
Thanks!

You'll need to update your apps with #2x versions of your iPad graphic assets, at a minimum. So for MyImage.png you'll need a double-size version named MyImage#2x.png. If you have a universal app, and say, the following 3 images for iPhone, iPhone Retina, and iPad:
MyImage.png
MyImage#2x.png
MyImage~ipad.png
you would need to create MyImage#2x~ipad.png.
I think I have that right.... Could be that in this case the iPhone images would have ~iphone in their names too, but I don't think that is a requirement. (It's allowed, but not a requirement, I believe.)

Related

do I need to include #1x images of app only runs on iphone 4s and above?

Is this still necessary? 2x and 3x seem to be the only images I need based on models I support. What is the correct approach?
If your app is targeted for iOS9 or less then you still have to build for the iPad 2 which does not have a retina display.
http://www.evad3rs.net/2014/10/ios-9-supported-devices-compatibility.html
Even if you're building an iPhone only app they will run on an iPad.
You cannot restrict your app by device. So if you're supporting iOS9 or less (which is every OS version) then you should include #1x images for this reason. If you don't then the #1x devices will just display scaled down versions of the #2x images so you don't NEED to include them... but you should.
What you can do instead (which is something that I have been doing more and more recently) is to use an app like PaintCode. This will take your images and turn them into code. This code is then imported into your project and the images are generated at runtime by the code. They are completely resolution independent and it reduces your app bundle size as you don't have to bundle in any images.
According to IOS Human Interface Guidelines all IOS high resolution devices below IPhone 6, use 2x form of images. So if your app will not run for non-high resolution devices, I am guessing you don't have to add 1x version of images.
Here's the thing, apple reviewers always test your app on the latest and greatest device. They will certainly test your app on BOTH iPhone and iPad using the latest hardware. They don't have time to regression test your app on every possible device (ipad2, iphone3, iphone4, iphone5 etc). Your users on the other hand will let you know when things don't work as not everyone is on the latest hardware.
Now when you create a project you are required to provide icon images. I am sure you know this screen in Xcode. You can see there are places for 1x images. What happens if you don't provide 1x images? Go ahead, archive the project and try to upload to itunesconnect. You will most likely get a validation error that certain images are missing.
Like other said you cannot restrict your app from running on iPhone 4 Vs iPhone 4s and your binary will be stopped from upload if any required images are missing.

Different image sizes for iOS development

According to this link, would I need four different version of the same image size? Originally, I only created one for the iPhone 5, and I used the autosizing feature on storybuilder to resize the image correctly on iPhone 4s and below.
Concerning the four resolutions (***#2x.png): As it is described in https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/IconMatrix.html#//apple_ref/doc/uid/TP40006556-CH27-SW1 you have to resize some images, for example the App Icon has to be high- and low-resolution,
If you need to support standard-resolution iPhone or iPod touch devices
(Source: https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/IconMatrix.html#//apple_ref/doc/uid/TP40006556-CH27-SW1)
For the other Images, it is not necessary, but as "ta.speot.is" described in https://stackoverflow.com/a/12549329/1113407 it is better if you do it yourself.
And "JustSid" comment
Why should already slow devices do even more work?
(Source: https://stackoverflow.com/a/12549329/1113407)
put it straight: The older devices which do not support retina display are slower and at most times (own experience) your app won't run fluently on those if you do not prepare the app.
Concerning the iPhone 5 vs iPhone 4S:
You need some images in both heights, as it is mention in https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/IconMatrix.html#//apple_ref/doc/uid/TP40006556-CH27-SW1.
As the iPhone 4S has got the Apple A5-Chip and doesn't have to resize the image, as it has got an retina display, other images don't have to be resized. Therefor you could use the storybuilder-feature... But you have to ask yourself if the app should run on an older, non ratina display device...

ios, publish different build per device

Google Play allows different apks per screen density, does Apple Store support this?
I'm sure the info is somewhere, but all I find when I search are people asking how to develop one app to support all devices.
I know how to do that already, but this specific (top secret) project will be 1000 times better if I can release one super optimized version for each screen resolution... but I'll settle for density or device (generation and type) if needed.
I don't have access to XCode (no Mac) to check options currently.
Bonus points: If possible, is Apple going to frown on this and possibly reject my app because of this?
This can't be done. If your app supports the iPhone then it must support both 4" and 3.5" inch iPhones. If it supports only iOS 7 then you can avoid non-retina devices because only retina devices can run iOS 7.
But if you support the iPad you must support both retina and non-retina.
You can have one app (Universal) that does it all or you can have separate iPhone and separate iPad apps. But the iPhone app must support both sizes and possibly both types (retina and non-retina) of screens. And the iPad app must support both types of screens.
Apple won't accept apps that don't support the differences.
It should also be pointed out that in the Interface Builder part of Xcode, you setup the UI with points and not pixels. So, for an iPad, when you place a button, you do not have to specify retina or not. On a Retina screen a point is 2x2 pixels and on a non-retina screen a point is 1x1 pixels. Also, with image assets, you have a single image asset you ask for in code, but you add multiple copies of the image in the image assets. Like the retina and non-retina copies. If you have an image named cat.png, for retina this would be cat#2x.png and for non-retina it would be cat.png. But, in code or the inspector you would reference it with imageNamed:#"cat" and Objective-C is designed to handle the rest.

Optimization of iOS6+ images game

I have a game on the Apple Store, we make it to iPhone with retina & non-retina images. We are exporting to iPad and making it universal app.
But the main problem it's that the app its 45MB without iPad with iPad retina & non-retina, I think will get more than 100MB
I was thinking removing the normal images and leave the #2x as the normal images. And for preventing 3GS devices I upgrade it to iOS7.
What do you think? or how do you solve this issues in your games?
Note: we have the app in spanish & english, and because we render some text with shadows and stuff, we add it as images, so in some cases we have 8 assets per image :S
Thanks!

How to name graphic files for iPhone 5?

The iPhone 5 has just launched, so I was wondering if anyone knows how graphics files are going to be renamed for the iPhone 5?
The resolutions are different between the iPhone 4S and the iPhone 5, so I assume there will also be a new naming strategy applied for iPhone 5 graphics? #3x maybe?
The iPhone 5 is still a Retina display, with two pixels for every point. That's what the #2x suffix for graphics is used to indicate, so the same suffix will be used here.
As others have suggested, there is one new piece of required artwork in the Default-568h#2x.png startup image, without which it appears your application will not be recognized as supporting the iPhone 5's display.
Beyond that, the only reason you would need special graphics for the iPhone 5 is if you had keyed something off of the overall dimensions of the screen. In that case, you'll need to detect the main screen's frame and substitute appropriate graphics at runtime using your own naming convention.
-568h#2x.png scheme doesn't work right now for graphics other then splashscreen, so for today there's no way.

Resources