I'm developing an iPad app with lots of multimedia content and I want it to work both on retina and non-retina display iPads.
I would like to know if I have to include every single image that will appear in retina and non-retina resolutions like this:
image1.png 1024x768 Standard resolution for fullscreen iPad image.
image1#2x.png 2048x1536 Retina resolution for fullscreen iPad image.
Wouldn't it be enough with the retina resolution and if the app detects that it's running on a non-retina device, then shrink it? It seems to work that way in the simulator.
I'd like to keep the size of the app as low as possible and I don't think that duplicating all the image assets will help.
Related
I am working on designing a universal (iPhone, iPad) application, this app is portrait only, and I want the application show some fullscreen images to users.
I edited my images size for (iPhone) like this in 1x=> 320*480px and 2x=> 750*1334px and for 3x=>1125*2436px.
now I am designing the app for different iPads. I searched a lot to find whats the best sizes for 1x and 2x and maybe 3x iPads but I couldn't find any exact pixels which I should choose for my images. its very important for me to show images with high quality and no and no stretch.
my question is what sizes in pixel should I choose for my images to shown in iPads perfectly.(full screen and portrait).
Appreciate any help.
is it possible to render non-retina images using retina images programmatically at runtime?
I'm developing an universal App, and there are a lot of images in my app bundle, make my app bigger and bigger and I'm trying to downsize my app....
I can't just delete all non-retina images, cause I need to support iPad mini without retina display.
So is this possible? Using retina images to render a non-retina images, will this cause fatal performance issue? or any other side effects?
Thank you very much.
Edit1:
#troop231 Yes, the 1st generation iPad mini and 2ed generation iPad mini both supports retina assets
#bstahlhood I thought I was doing something wrong so the universal App on 1st gen iPad mini not using the #2x images, looks like this is just another limitation from Apple.
So I guess the only solution is not to support 1st gen iPad mini or I have to add both non-retina images and retina images in my App bundle?
Yes - but you need to specifically set the frame dimensions for the image in every case by the 1/2 size.
e.g. retina image is 100x100 so if you use it make sure it has CGSize(50,50)
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.
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
I am building a small game for iOS on Flash CS6 and I want to target both iPad and iPhone resolutions, also supporting retina display if possible. I've played with the movie properties and the Air for iOS settings, but I am still in confusion about the screen resolutions. I want to make a HD (retina-enabled) game, and I want to target the non-retina models too. Which resolution should I use? (I'll be having only landscape) Should I go with 2048x1536 (iPad Retina), 1024x768 (iPad non-retina), 960x640 (iPhone/iPod touch retina), or 480x320 pixels (iPhone/iPod touch non-retina)? I've set the resolution to High in Air for iOS settings, left the default resolution (960x640) unchanged, but when I tested it on iPad 3, the resolution wasn't HD, even though my graphics were vector (made in Flash). There was also background color visible around the corners, compensating for the aspect ratio difference of iPhone and iPad. Why can be the App rendering in non-retina resolution even though I've checked it at the settings for iOS? And more importantly, what is the best approach for targeting both screen resolutions in a single app?
Thanks,
Can.
Despite iOS being a resolution dependent OS, stage resolution doesn't matter. It will look the same if the stage resolution was 240x160 or 1920x1280. The device will render the game to it's native resolution. This is why you need to set the resolution in the publish settings: so that flash knows to add support for those resolutions for iOS. Setting the stage to 960x640 should be fine for the iPhone. When it publishes for iPad on the other hand, it will be built to it's native screen resolution, but because the iPhone and iPad have different aspect ratios, the iPad will have more space on the side. Since the game will be in landscape mode, it should be ok to simply put to thick black rectangles on the top and bottom of the stage.
As for the new iPad resolution, Flash isn't powerful enough to support that resolution, it will export to the standard iPad resolution of 1024x768 even if the resolution is set to high in the publish settings.
So pick the stage resolution based off of what device you favor, if you want the app to look best on the iPad's format, go for 1024x768, but the iPhone will have extra space on the sides in landscape mode. The same goes for the iPhone resolution I explained earlier. Although, if you'd like to fully support both, you can try many methods used to position GUI elements on the vast sea of Android Screens based off the Capabilities.screenResolutionX and Capabilities.ScreenResolutionY methods in flash.