I'm developing some app that it is not actually on iphones older than 4. So I have included in the project only #2x images, and have seted not to launch on iphone 3x and older. Is it ok not to include images without #2x suffix, cause it is not relevant? (I mean for AppStore)
The low res images are not required. Don't forget that the iPad can also run your iPhone app, and would be using non-retina images.
For memory purposes the OS uses the low-res pictures in older iPhones/iPods that's why it would need them. So if you are not supporting them you probably don't need them, I would recommend you to not add the suffix (just in case it messes up with something), just leave the original name of the image.
About supporting your app in the iPad, in the 2x mode your app will look a bit better because it will be using the high-res pictures instead of the low-res pictures.
Related
Say I have an image which is half the height of an iPhone 4s screen display, when this image is loaded to an iPhone 5 clearly this size is no longer half the size of the iPhone, as the iPhone 5's height is slightly larger then the iPhone 4s.
My question is, like using the image 2x and 3x, is there a way of adding images to your app that target specific iPhones? So that the other images not targeted will not be downloaded with the app.
Or will I need to add images of various sizes to the app and then in the code, say if iphone4 load this image, if iphone5 load this? The only reason I don't want to do this is because I will have 3x the amount of stored images (target iPhone 4, 5, 6) than I would for the iphone6 plus or iPad.
What I was hoping for something like image#2x~iphone4.png or image#2x~iphone5.png, but this doesn't work.
David Cao's answer is correct for bundled image assets, but you have mentioned that you don't really want to include this many assets with the app.
You may want to look at the App Thinning features of Xcode 7 / iOS 9, along with On-demand Resources this will allow you to load your required images into Xcode but the App Store would only download the resources required for the device being used.
If you still need to support iOS 8 you would need to have the images stored on a remote server and load them in when needed.
Take a look at image assets, it solves the exact problem you've stated.
https://developer.apple.com/library/ios/recipes/xcode_help-image_catalog-1.0/Recipe.html
What it does is allows you to provide 1x, 2x, and 3x images which can be referenced as a single name, when you call [UIImage imageNamed:#"imageNameHere"].
My question is simple: when an iPhone app also supports retina display, it does not need an additional xib file. (Fonts and images are auto-scaled, you just need to prepare double-resolution images.) I want that retina view also applies to iPad and hence there's no additional xib files. (Scale a bit and leave a bit margin, maybe.) Yes, I just want it look bigger, but not in the low-resolution version scaled up from 320x480.
The iPhone, even with a retina display, is not an iPad. You can update your targets and xcode will convert automatically your views to use the entire screen of the iPad, but it won't make the application conforms to
1. Apple guidelines
2. Users expectations of an universal app.
But, as I said, if you do update your targets, your app might look relatively good (just programatically use UI_USER_INTERFACE_IDIOM to use the #2x.png version of your images).
Edit: I misunderstood your question, and now the corrected answer:
There's nothing you can do. The iPad will launch the app as an iPhone app (the small non retina display, pixelated if double sized) if it is defined as such in your plist, and iTunes Connect will sell your app as universal if it isn't defined as an iPhone in the info.plist.
You basically have little choice here but to port the app or to more or less forget about iPad users. And Apple certainly wanted things to be that way...
Considering that the iPhone 4 has a much higher screen resolution than iPhone 3 -
How can I port my code to iPhone 4.
Won't recompiling it change the appearance of images, controls, etc.?
The provided UI elements should take care of the scaling for you. For anything you render, you'll need to take into account the screen resolution and scale accordingly. You might want to look at :
http://developer.apple.com/library/ios/#documentation/2DDrawing/Conceptual/DrawingPrintingiOS/SupportingHiResScreens/SupportingHiResScreens.html%23//apple_ref/doc/uid/TP40010156-CH15-SW1
I'm sure you already know this, but just in case you don't: you should be sure to include larger assets in your XCode project with #2x before their file extensions. For example: icon#2x.png. #2x tells iOS to use the larger version of the asset for Retina and iPad displays.
So I'm currently making an app that supports both iphone 3gs and ipad (this is a universal binary app).
What I'm wondering is how will iphone 4 users view my app, will they see it pixelated? will they not see it full screen since my iphone 3gs is on a smaller resolution?
I don't have an iphone 4 yet but I'd rather just release this app as is - just for 3gs and ipad. Is there anything that I must know / any precautions etc? Oh (i just thought of this) is there an iphone 4.0 simulator so i can check out if my app works okay?
Thanks!
Basically any bitmap graphics (PNG files) will look a little blurry on the iPhone 4's Retina display.
The easiest way to fix this is to make double scaled versions (100x100 becomes 200x200) of all your PNG files and add them to your project suffixed with "#2x.png". In other words, MyBitmap.png will become MyBitmap#2x.png. Luckily your code doesn't have to change. On the iPhone 4 the OS will automatically choose a #2x.png instead of the regular one when you do:
UIImage *myBitmap = [UIImage imageNamed:#”MyBitmap.png”];
Xib files will also use the #2x.png if there is one available.
Other than that there's also launch images and Application Icons to worry about. This blog has a good summary.
Yes you can change your device type, by in the simulator pressing: Hardware->Device->iPhone 4 If you don't have it you might want download the latest devevloper tools.
Also you might have to press Window->Scale->100%
I thought I read/saw/heard something saying that apps built for iPhone 4's Retina Display would automatically run at 640x960 when installed on an iPad. However, can't find any documentation on that specific feature, and my app still runs at 320x480 when installed on an iPad.
Is there a step I've missed to make this happen? Or did I just imagine this being a feature?
Apps do not auto-upscale, BUT if you have an image larger than the UIImageView you are placing it in, you will get as large a version as the iPad can draw.
I don't think it knows to pull in #2x images, just ones that are actually larger than the space you are placing them into.
This is not the case; currently, apps won't auto-upscale on an iPad. Perhaps Apple will add this in iOS 4.x for iPad, but certainly there's been no indication from them that they will.