Are #3x images mandatory? - ios

I want to update an app which was developed before there were #3x assets. Will my app get rejected if I don't include a #3x version for every image?

No, the #3x suffix is only recommended if you're supporting iPhone 6+ (iOS 8+) although not required at the current time. Below are the requirements and recommendations for image sizes.
Icon and Image Sizes

If your application supports the device running iOS 7, then it will not get rejected. One of my application was recently approved (a month ago), which doesn't contain any #3x images.
But it needs to be confirmed for the application that developed in iOS 8.
Edit
For your information:
My application was already on AppStore and It was an update.
Found from What's new on iOS 8
Support for a New Screen Scale
The iPhone 6 Plus uses a new Retina HD display with a screen scale of 3.0. To provide the best possible experience on these devices, including new artwork designed for this screen scale. In Xcode 6, asset catalogs can include images at 1x, 2x, and 3x sizes; simply add the new image assets and iOS will choose the correct assets when running on an iPhone 6 Plus. The image loading behavior in iOS also recognizes an #3x suffix.
I fear that you need to provide #3x images for all asset images if you are going to publish your application for iOS 8.0 and for iPhone 6 plus device. As it clearly says that "The image loading behavior in iOS also recognizes an #3x suffix".
I suggest you include #3x images before going for approval.

Related

How to set same image for iPhone and iPad during Universal app development?

I have searched a lot on this topic and now I am confused. According to them for iPhone and iPad we have different conventions like (image~iphone.png ,image#2x~ipad.png).
My question I have to import all images in the assets folder for iPhone mentioned below.
image#2x~iphone.png
image#2x.png
image~iphone.png
image.png
And same for the iPad also
image#2x~ipad.png*
image#2x.png*
image~ipad.png
image.png
There is a duplicate image in iPhone and iPad assets.Please let me know the best way to deal with the same image used for iPhone and iPad.
Also, we need to import #3x images for iPhone and iPad?
assets folder are build over app slicing and app thinning cocepts means all images which are 1x 2x and 3x would be included in your bundle but when user download your app from app store only images which suit the particular device downloaded from the apple server so you don't need to be worry about app size. no you don't need 1x 2x 3x images for iPhone and iPad. You can do it with single image set for example 2x is best in your case just include 2x images for all your device included iPad and iPhone.

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.

XCode Image dimensions #3

I have a general question about XCode / IOS. I know that i can upload several images for all IOS devices(original,#2,#3). I coded know a app and 30% of the time i needed for image processing. I want to understand the way, how XCode handles images.
My Question: Is it enough, when i just add a #3 image? Does XCode scale it down to all devices while building or does the device (iPhone) itself scaling the images down to optimized sizes while running the app?
Does the One-Image-Method cause performance problems on #2 and #1 devices or will IOS reject the app because of missing images for specific devices?
How are you handling this issue?
You have to include #1x, #2x and #3x in an asset catalog. iOS will then select the correct size for the device.
I personally use Asset Catalog Creator to create all my asset catalogs. It will resize and create all the files for you.
If you only use #3x, Xcode does not scale it down to all device. the device (iPhone) itself does not scaling the images down to optimized sizes while running the app.
This One-Image-Method cause does performance problems on #2 and #1 devices,you cannot see the picture on #2x or #1x devices.
IOS will most probably reject the app because of missing images for specific devices.
If your app is developed for all device , You have to include #1x, #2x and #3x. I use A Xcode plugin Named RTImageAssets to create all my asset catalogs.

iPhone 6+ using #1x images

In an app I am working on, iOS seems to be choosing the #1x images over the #2x images to display on an iPhone 6+ (picks #2x properly for a normal retina 2.0 scale screen). It was not always doing this though. I am not sure if the trigger was me adding a few #3x images or upgrading to 8.1 - both were done on the same day and I did not test on device until both had been done in several places.
Anyone else seeing this?
I'm having a similar issue with the iPhone 6 Plus running iOS 8.1, built with Xcode v6.1. The problem affects images used from the bundle, but doesn't seem to affect those in an asset catalog.
If only the 1x image is available, it uses the 1x image, as expected.
If only 1x and 2x are available, it strangely uses the 1x instead of 2x.
If 1x, 2x, and 3x are available, it uses the 3x, as expected.
I put together a quick asset test that I've uploaded to GitHub.
A workaround is, to set the images via myImage=[UIImage imageNamed:#"foo.png"];
Like so, the #2x images are taken, when no #3x is available.
You can do this recursively for every screen.
iOS 8.1.1 resolved this. It was clearly an iOS bug that Apple has now fixed!

iPad Retina development

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.)

Resources