If only supporting iOS6 and above, can eliminate iPhone non retina images? - ios

I'm wondering, if I only support iOS6 and above on my app, is it safe for me to remove all non retina images art images that are geared specifically for the iPhone? I know that I still have to support non retina for the iPad because iPad2 and iPad Mini (non retina) can still run the latest OS, but is there any flaw in my thinking that I don't have to support iPhone or iPod non retina anymore?

Since imageNamed: and UIKit in general will use the retina artwork if no non-retina artwork is provided, it's always safe to omit the non-retina artwork.
To more specifically answer the question from your comments, at present there are no non-retina iPhone or iPhone devices that can run iOS 6 or iOS 7 so it is currently safe to assume those devices are all retina. It is possible that in the future Apple will release a new device with that form-factor that isn't non-retina (imagine a reduced cost iPhone or iPod) though, so it's not a permanently safe assumption.
Bottom line, you don't need to include any non-retina artwork as long as you properly name and reference your retina artwork.

Related

Non retina images – must I add them to xcode?

Because I made app (iphone) myself, with 200 images, I want not using non retina images.
It may be for me big problem to resize images for non retina display.
I don't have non retina display iphone, to test it.
Must I add non retina images to xcode, or not?
If I don’t add them, must I add “#2x” to all images for retina?
I tried my best to find answer for my question but there was no clear answer.
Thx for answers.
I thing it will be better make non retina display images, than buy non retina device for testing how it looks.
I have another question:
Button background needs #2x images and non retina display background images?
You must add non-retina images if the platform your targeting includes non retina devices (e.g. iOS 6 and earlier or iOS 7 iPad). If you do not, non-retina devices may not render your app correctly.
If you are not targeting a platform that supports non-retina devices (Eg iOS 7 iPhone), you may omit non-retina images. Your retina images will still need the "#2x" suffix in the file name for the system to find them.
I read somewhere that if you do not include non-retina images, the iOS will use the #2x images, scale them on the fly to non-retina sizes, but that may affect performance. Make sure you test on at least one non-retina Device to make sure it works.
This should not be too much of an issue. Test your app on the simulator using non retina and make sure your images are showing up properly. Your images should scale and won't cause a problem. It would be better if you could have both retina and non retina images but not a game beaker.

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.

Necessary to have Retina and non-Retina for all images in iOS App?

Currently , all the UIImageViews in my app are set to scaleToFill mode, using only one retina image without setting any non-retina image. I suppose that on non-retina display, the extra resolution will be lost by itself.
Question: Is this approach acceptable? And will Apple disapprove my app due to the missing non-retina images for UIImageView?
Apple won't reject your app. However it's recommended to have non-retina versions if you're targeting Universal devices, since there are still lot of non-retina iPad out there, and scaling is slower and sometimes produces ugly images.
If you're targeting iPhone only, (IMO) there's no need for non-retina images.

iPad retina stretches non-retina images in Cocos2d

I have a iPad app built with SDK 5.1 (Xcode 4.4). The app is a non-retina app. On iPad 1 and 2 the images are scaled properly. On the new iPad (3rd generation) all the images get scaled up. This behaviour is kind of expected, but undesired in my situation. How do I prevent the images from being scaled up?
Since you are building for both Non-Retina and Retina devices you should include both versions of all images. The Retina images should be double in size of the screen resolution and should have the #2x.png (or jpg) suffix. Example: Background-Image#2x.png

Resources