Will my iphone 3gs app work ok on iphone 4? - iphone

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%

Related

Do I still need low-resolution images for using Interface Builder when developing iPhone app for iOS 7?

I started to develop an iPhone app for iOS 7.
Since iOS 7 does not support devices with non-retina display for the iPhone/iPod touch, and it uses high-resolution images on non-retina iPads (iPad 2 and iPad mini) in the iPhone emulation mode, now I think we don't need to provide low-resolution images when developing an iPhone-only app which deployment target is iOS 7.
I thought it's great, but soon I faced a problem when I used a Storyboard; apparently Interface Builder can not display high-resolution images which file names end with #2x.
I feel it's really pity that we have to provide the low-resolution images ONLY for the Interface Builder...
Is there any good workaround for this? Or do we still have to provide low-resolution images if we want to use the Interface Builder?
You are correct that an iOS 7 iPhone-only app is not going to run on any single-resolution devices, so you only need to provide double-resolution images. Do what you have always done in the past: refer to your image as myImage but name the actual image file myImage#2x.png. Even better, use the asset catalog! Place the double-resolution image in the 2x slot and refer to it by the name of that image set. Either way, this will work perfectly both in the storyboard editor and in the running app; in the storyboard editor, the Media Library and things like buttons that have images will display your image's name as myImage.

Making Iphone App Working on iPad

I have created an iPhone Application, which works only on iPhone.
Now, I want that App on iPad, too.
Is there any way that I can reuse my existing iPhone XIBs to support that App on iPad. (I don't want to recreate all the XIBs for iPad separately.)
Any guidance for that?
Also, What other points I need to take care of?
Your iPhone app will work in iPad if you choose 2x zoom view. But the display will not be of the highest quality. Now rumors are there that next iPad will have retina display. So, one suggestion I can give is, when you create a new project, Choose "Universal" as the option for device family.
Depending on your app, Feature detection might be one thing you have to look out for when you try to run an app on iPad. For example, Siri is available for iPhone 4s, but not iPad 2. (Although the API for Siri isn't out yet, I'm just putting it there). Also, iPhone 4 has camera, while iPad 1 doesn't have.
Click on your target, and under "Devices" change to Universal. Now your project should run on either device.

Application without support for older IPhones

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.

How to make an iphone and iphone4-retina compatible app (done in cocoa) easily adapted to ipad?

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

iPhone 4 apps automatically scale up on iPad?

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.