For an upcoming update to one of my apps I have packed all the image resources into Asset Catalogs.
However, at the moment I do not have @3x version for most of my images. I have checked with the simulator and on iPhone 6 Plus @2x versions are used.
I don't mind this behaviour for two reasons:
Although images load correctly in the Simulator for iPhone 6 plus, I am a bit worried about what happens when I archive my app. In particular, I am afraid that with App Thinning iPhone 6 Plus users will get an app without any images :)
So, I have two questions:
These are trivial questions, but I couldn't find info anywhere online as to what happens when you do not follow Apple's guidelines by not providing @3x images in asset catalogs but your app is still available for iPhone 6 +. In addition, some of my images are in JPG format which adds extra uncertainty because it is not an ideal format for iPhone.
Thanks in advance for any assistance!
I performed several additional tests using the procedure proposed by Matt:
[UIImage imageNamed:]
returns nil
for JPG images unless ".jpg" extensions is provided as part of the image name[UIImage imageNamed:]
returns nil
for JPG images unless ".jpg" extensions is provided as part of the image name.[UIImage imageNamed:]
returns JPG images correctly even when not specifying ".jpg" extension. Images also load correctly when ".jpg" extension is included[UIImage imageNamed:]
returns JPG images correctly even when not specifying ".jpg" extension. Images also load correctly when ".jpg" extension is includedI have used the image extractor tool suggested by Matt to extract images from these Assets. I was only able to export from archives for devices which are with Retina and I can confirm that all images had correct resolutions (i.e. only retina size, iPad specific images ignored). The tool, however, saved all of them in PNGs format and so the resulting size of the folder was always bigger then Assets.car.
What is most surprising is that the size of the folder was the same (39.4MB) for cases 3 and 4. Also, the images seem to be exactly the same. So, I really wonder what happens there because there is a difference of 2MB in the size of Assets.car for these cases.
To conclude, we are still not sure if such testing method can be used to accurately mimic the App Thinning behaviour. So, if anyone had a personal experience with this it would be awesome if they could share it.
However, assuming that exporting for specific device for AdHoc produces the same result as actual App Thinning performed by App Store we can conclude that:
[UIImage imageNamed:]
returns JPG images correctly without providing ".jpg" extension only when JPG images are correctly processed through Asset Catalogs. Which, as mentioned earlier, only happens when minimum deployment target is iOS 8 or later[UIImage imageNamed:]
always loads correct images if ".jpg" extensions is specified.The last two conclusions seem to be irrelevant to this question, but I have found several conflicting opinions on Stack Overflow about how to load JPG images correctly with Asset Catalogs. Some people claimed that you can load them without providing ".jpg" extension whilst others complained that this approach doesn't work. I think 3 and 4 above explain in details what is happening in this case and why people get different results.