Do I really need lower-resolution images for older iOS devices? - ios

I am developing an iphone application and i am using a background picture for my app. I know that before iphone 4 , the resolution of the screen was 480x320 and after 960x640. I read that i should use 2 images like : MyImage.png and MyImage#2x.png with the 2 different resolutions and the app will know which one to choose according to the phone. My question is very simple. If i just use the 960x480 , whats the difference? I am developing on an iphone 3gs and i am using this resolution and everything works perfect. So why have a small resolution for these phones?

The difference, in my opinion, is the following: the phone is going to resize the doubled-resolution to half the size, and this will lead to (1) the final image is not as smooth as if you would have exported it from a image application like Illustrator or Photoshop - at least from my own experience, when I export both resolutions, in non retina devices, the images don't look as good if I had exported the normal resolution. Also (2) the device will waste time/performance to make this conversion, although I don't know how much it is significant. And (3) finally, you may overload memory with no need, considering that the doubled sized images are bigger files, and you could use smaller files instead.
If you don't mind about this issues, you can go ahead. Try yourself.

If nothing else, the high-resolution images will tax the memory much more. One full-screen image at 320✕480 is around 600K in memory, whereas the 640✕960 is almost 2.5M, four times as much. On the older devices the memory is much more scarce than on the new ones and you might run into problems later in the development cycle, when there are more resources in play.
Even if you are able to test the app on all older supported devices and you can guarantee that there are no immediate performance problems or visual glitches, the app will take more memory, forcing the OS to kill other apps more frequently (= worse overall user experience).

if you use one version of image, (960x640) , there will be a memory overhead when the app run on non-retina. you dont need to display the high res in non-retina, only in retina display, making two versions of images .png and #2x.png will tell ios which image version it should load, depends on what device is currently in use.

Related

iOS: minimum image resources necessary for ios application using size classes

This question might be a duplicate, but I couldn't find any reasonable answer.
I am developing an app that supports all iOS devices, for which I have to import image resources for every device.
If I use image optimizer, it will destroy quality of images.
Currently my app consists of iPhone 5, 6, 6+, iPad and iPad retina images, which costs me about 20 MB space in my application.
How can I reduce this size? E.g. by removing iPhone 5 or iPhone 6 images, will the application work fine or not?
This will all entirely depend on the design of your application. #3x graphics are for the iPhone 6+ only (for now), and the resolution on the device is so high some users might not notice that the #3x graphics are missing. You might also be able to "re-use" some of your iPhone graphics for the iPad (for example you could use the iPhone #2x graphics for the iPad non-retina). But again, depends on your graphics design.
I don't know how you use this images, but
If you want reduce the size of your app there are, for me, two solution.
Check if the size of your images are not too big (the size of your UIImageView x2 will be enough).
Get the images by downloading the right image and store it in the device.
No, you have to store iPhone 5,6,6+ startup images just to disable scaling.
Remove redundant orientations from startup images.
Try to use ImageOptim to minimise png images. It uses lossless optimisations.
Try to use lossy optimisations for images if they are still too big.
If you use clean background in your app, save startup images with only background colour without UI, and make sure that app start fast. It will look OK.

Supporting iPad non-retina with retina images only

I am developing an iPad application and started all my development having in mind the retina resolution (2048x1536).
I named all my images without the #2x suffix.
The app seems to be working fine in the iPad AND the iPad retina simulator.
Do I have to rename all these images to add the #2x suffix and add a copy of all of them without it, and at 1/2 scale?
As I see it some automatic scaling is done by itself.
Is this ok performance wise?
It's fine for performance. The big issue, actually, would be memory. It is a waste of memory to display a double-size image when a single-size image will do; after all, we're talking about an image four times as large. This might or might not matter depending on how much memory we're talking about. In general you should always be scaling images down, yourself, to the actual display size/scale at which they are used, whether you do that in code or by supplying multiple versions or whatever. To do otherwise can be a significant memory waste.

Is it necessary to create a retina version of an app?

Im creating an iOS game and I thought I was done until I test ran it on the iPad Retina simulator, and its extremely laggy. Is that a simulator glitch, or will it actually not work on the Retina iPad? I tried looking up if it was necessary and couldn't find an exact answer.
You shouldn't be using the simulator for making any kind of judgment around performance. It's a simulator, not an actual device. It doesn't represent the actual conditions you'll be experiencing in hardware, and there are vast differences in terms of graphics and the rendering pipeline. If you're not testing your app on a hardware device you're doing a disservice to your potential users.
Do bear in mind the vast majority of devices being sold right now are retina. Many graphically rich games are able to support the hardware, so I suspect what you're seeing is either a) due to the simulator, or b) can be fixed with some optimisation.
Yes it is (kind of). The appstore has regulations on retina apps. I think that they only accept retina apps and a lot of people use retina devices so it might be a good idea to make it retina.
No it is not necessary. It may look pixelate on a retina device but it is not necessary. However, many people use retina devices (just consider this). Retina is just for looks most of the time. Good luck on your game!
Edit:
I looked into the developer and appstore requirements. Apple needs you to have a retina version or you might be looking at a turned down app. Anyways, have fun with this and good luck!
Designing for Retina display
Building apps for Retina display involves creating two sets of images — one at 163ppi and another at 326ppi. After slugging our way through an app build or two, we feel confident that we have a decent workflow for attacking future Retina display app designs. Hopefully this information is of use to other designers
For More Information Please Check HERE1, HERE2
Yes you need your iOS game to run on all the devices glitch/lag free, when you go for publishing the application on the store it'll be turned down if it is not working on the retina version.
Possibly you are not using the images for retina display which are double the resolution
make sure resolution independence is turned on
design your artwork 2x as large as the actor (so a 100px actor should have artwork that is 200px)
ENSURE that all artwork is divisible by 4. (200/2 is 100, which is the size of the actor. 100/2 is 50 which is the pixel it will center on when placed in the game, you can't rest on .5 a pixel, it can turn out blurry)
Drag artwork into GS and program as normal.
I hope this solves your problem

Reducing the artwork size for a universal iOS app [duplicate]

I am developing a cocos2d game. I need to make it universal. Problem is that I want to use minimun amount of images to keep the universal binary as small as possible. Is there any possibility that I can use same images I am using for iphone, retina and iPad somehow? If yes, how can I do that? What image size and quality should it be? Any suggestion?
Thanks and Best regards
As for suggestions: provide HD resolution images for Retina devices and iPad, provide SD resolution images for non-Retina devices. Don't think about an all-in-one solution - there isn't one that's acceptable.
Don't upscale SD images to HD resolution on Retina devices or iPad. It won't look any better.
Don't downscale HD images for non-Retina devices. Your textures will still use 4x the memory on devices that have half or even a quarter of the memory available. In addition, downscaling images is bad for performance because it has to be done by the CPU on older devices. While you could downscale the image and save the downscaled texture, it adds a lot more complexity to your code and will increase the loading time.
There's not a single right answer to this question. One way to do it is to create images that are larger than you need and then scale them down. If the images don't have a lot of fine detail, that should work pretty well. As an example, this is the reason that you submit a 512x512 pixel image of your app icon along with your app to the App Store. Apple never displays the image at that size, but uses it to create a variety of smaller sizes for display in the App Store.
Another approach is to use vector images, which you can draw perfectly at any size that you need. Unfortunately, the only vector format that I can think of that's supported in iOS is PDF.

iOS apps - why include both #2x and low-res images?

This has been bugging me for a while. I don't understand why one should include low-res images. If a 3GS, for example, can't find the low-res image, it just uses the #2x version anyway and displays it at it's native resolution. So why add to the filesize of your app by including all the half-res images?
Halley had it right. The system does not automatically downsample #2x images to non-retina size, and it shouldn't. The 3Gs does not have enough memory to load retina images. It will likely choke your app and cause it to exit with an out of memory error.
The problem gets even worse with the iPad 1. The iPad 1 has very low memory relative to it's screen size, and if you tried to make it load retina sized images, it would choke and die very quickly.
To scale an image the system has to load it at full size and do a complex scaling operation each time it draws it. It's the worst of all possible worlds - slower, 4x as much memory, and the images don't look as good.
In most cases, you can make an icon look better when created at the low-res resolution, instead of having the system scale it. If you don't care too much about how your icons look when scaled, then using the #2x version only is probably fine.
The other posters mentioned some excellent points, but here's one more for posterity: as mentioned several times in http://developer.apple.com/library/ios/#DOCUMENTATION/UserExperience/Conceptual/MobileHIG/IconsImages/IconsImages.html#//apple_ref/doc/uid/TP40006556-CH14-SW1, a 2x image may be more detailed. In other words, the low-res image isn't simply a scaled-down version of the 2x image; the 2x image may contain details not present in the smaller image.
#2x filenames are intended for Retina Display enabled devices.
If you intend to use them for display on the iPhone 3GS make sure to properly test that they look as acceptable as the low-res image Apple wants you to use.
The reason being, is when images are scaled up if there is no #2x available, they can become pixelated and blurry, so you would prob think that making the original image twice as big would solve the problem.
But no, because the retina devices would still scale it up (in my experience) and non retina devices would display the image incorrectly.
It's got a lot to do with the quality standards Apple wants for the Apps on their app store

Resources