I am trying to release my first iPhone app. When I started this project about 2 years ago, I designed and developed the views on my iPhone5 and tested them all on the iPhone5s and beyond simulators. Didn't think I needed to developed for anything below the iPhone5. It will also take a huge effort to developed below the iPhone 5 and with not much benefit.
My app got rejected because it is not usable on the iPhone3Gs and iPad which are lower resolutions. My app works perfectly on iPhone5 and above.
In xCode, Devices is set to iPhone (not iPad or Universal). Think it is very misleading since Apple will reject if your app doesn't work on an iPad.
Is there any way around this?
I heard you can constrain your app to be 64-bit only which will make it only work with iPhone5 and above (anyone know how to do this), however there is still a constraint with the iPad Air which is 64-bit and the lower resolution.
If this is not possible, what is the easiest way to developed views for the iPhone3gs separately. I don't want to touch the current ones (iPhone 5 and above) because they work and look great.
Thanks :(
Probably you are missing the 1x images resolution.
For each image you use in you app your need now 3 resolutions 1x, 2x and 3x.
for example:
image.png 40x40
image#2x.png 80x80
image#3x.png 120x120
1x is for 3gs, ipad 2 and ipad mini 1.
3x is for iPhone 6 Plus and iPhone 6s Plus.
2x is for all the others devices.
Related
Xcode's interface for assigning launch images into an assets catalog is rather confusing. Only 2 image slots are made available given the settings we've chosen (Portrait only, for iOS 8.0 and later) and yet the Apple docs list a variety of resolutions required for their various devices (6s, 6s Plus, 7, 7 Plus, etc.), 12 of them to be exact. I'm using Xcode 8.3 btw.
We are designing portrait images for commonly available devices, but how to assign them here? Notice pics below showing a confusing mismatch between the expected resolutions of images (straight from Apple docs) and the Xcode UI for assigning those images. There are only 6 slots available, and even if the Apple docs described only 6 images, it is impossible to tell which goes where.
EDIT: Deployment target is 8.3.
Depending on your deployment target, there's either 3 or 4 total resolutions you need to care about: 5.5" devices, 4.7" devices, 4" devices (e.g. iPhone SE), and if your deployment target is iOS 9 or below then 3.5" devices (e.g. iPhone 4S).
The "iOS 8.0 and Later" iPhone Portrait gives you the 5.5" and 4.7" devices. If you check the "iOS 7.0 and Later" iPhone Portrait option that will give you "2x" (which I believe is 3.5" devices) and "Retina 4" (which is 4" devices).
Using those 4 options you'll be able to cover all supported iPhones.
If you need iPad support, you can check the relevant iPad checkbox. However, it looks like the asset catalog doesn't offer a slot for either iPad Pro, I don't know why not. This answer suggests that for the iPad Pro you should ditch the asset catalog entirely and switch to free images and Info.plist keys.
You also don't need 12 images for 12 devices. A bunch of the devices share the same resolution. Here are the images you need:
2048x2732 - 12.9" iPad Pro
1668x2224 - 10.5" iPad Pro
1536x2048 - 9.7" iPad, 7.9" iPad mini 4
1242x2208 - iPhone 6s Plus, iPhone 7 Plus, iPhone 8 Plus
750x1334 - iPhone 6, iPhone 6s, iPhone 7, iPhone 8
640x1136 - iPhone 5, iPhone 5s, iPhone 5c, iPhone SE
640x960 - iPhone 4s
If you upgrade to Xcode 9 you'll also need an 1125x2436 image for the iPhone X.
If you would just use a launch storyboard like everyone else, you wouldn't be having any problem. You would just supply one launch storyboard: end of story.
EDIT As of iOS 13 and Xcode 11, this will soon be required. Launch images are dead. Your app must have a launch storyboard.
I have an app on the App Store and I've made sure several times that iPhone is selected in: App > Target > General > Deployment Info > Devices > iPhone
..rather than Universal or iPad.
It appears every time the app is approved it still says iPad supported, how can I disable iPad support completely since the above "solution" doesn't work?
That is normal, iPhone applications can also run on iPad in a iPhone simulator mode.
This is the description of one application of mine only available for iPhone.
Compatibility: Requires iOS 7.0 or later. Compatible with iPhone,
iPad, and iPod touch. This app is optimized for iPhone 5.
This one just for iPad:
Compatibility: Requires iOS 7.0 or later. Compatible with iPad.
and this Universal (both iphone and ipad, no simulator)
Compatibility: Requires iOS 7.0 or later. Compatible with iPhone,
iPad, and iPod touch. This app is optimized for iPhone 5.
It seems the same, but in the reality there is also a + sign with written:
This app is designed for both iPhone and iPad
Making them "Just for iPhone" doesn't let iPads not use them. Imagine this bit of a crisis: on the first iPad's release, how did apps get on the store, since they were designed for iPhone? Developers had some options:
Make an "HD" or "iPad" version. This involved redoing the entire UI so it would fit on the bigger screen.
Do nothing. The iPad's would get the iPhone version of the app, but they would just be, as you can guess, oversized iPhone apps.
After a couple years, there was another option:
Make a "universal" app. This allowed both UI's, both big and small, retina and 1x scale devices, to be "bundled" together in the same Bundle. (heh, bundle pun.) Puns aside, this allowed for apps like "Facebook" to run on iPad, iPhone 3GS, iPhone 4, iPhone 5, iPhone 6, the future iPhone cheeseburger double-decker 7+, and everything else, without having to remake the entire app.
On the iPad, as mentioned by Andrea, it runs in an "iPhone Simulator" mode. This makes the tiny screen be rendered in the tiny screen scale, and, since iPad is over twice the size of the iPhone, it gave the iPad a "2x" button to zoom it in and make the UI bigger.
It's like an app designed for iPhone 4 running on an iPhone 6 Plus.
The iPhone 4 renders stuff at 960x720 landscape or 720x960 portrait, and iPhone 6 Plus's display is much bigger. To accommodate, it letterboxes the content and scales it up automatically.
I have an iPhone app which has been coded to be optimised for the various iPhone screen dimensions and resolutions. I have not included an iPad version.
When I view this app on an iPad Air 2, which version will I be seeing? The version optimised for an iPhone 6 Plus? Or something else?
(My reason for asking this question is that I don't have an iPhone 6 or 6 Plus to test on so I'm wondering if my iPad can do the job for me. I'm mainly interested in seeing the layout and image resolutions).
The actual question is: do I need to create non-retina images if my app should only work on iPhone5/s and iOS >= 7.0?
If you are only targeting iOS 7 iPhones, you will be fine using only retina images. Your app will be able to run on an iPad though and if it does not properly, your app will get rejected. Make sure to include an app icon for iPads, which is 76x76 points, so 152x152 pixels.
No need of non retina images.
Non retina images may be used only for the non retina devices like iphone 3gs .
I am developing an app that support iOS 4.0 or above. As iOs 4.0 can be installed in iPhone 3GS, iPhone 4, iPod touch 3rd gen, iPod touch 4th gen. The app will be run in non retina display device and retina display device.
I understand that the OS will determine which image file to display (2x resolution or normal resolution) depends on the devices.
If I only have retina display device for testing, can I just use the simulator to test that the UI look good in non retina display?
Just want to make sure you know this: To support retina and non retina you need to have two versions of the same image. For example if the non retina version is named image.png and is of dimensions 100x200, the retina version should be the same image named image#2x.png and of dimensions 200x400. If the retina version is not available the OS scales up the non retina version.
Your simulator has an option to run at the iPhone's normal or retina resolution. Once your iPhone Simulator is booted up, in the top menu bar, select Hardware>>Device. In that menu you can switch between iPad, iPhone and iPhone (Retina). This way you can test your app on retina and non retina resolutions without having those actual devices.
There's no true replacement for device testing, but yes, if it looks alright in the simulator, it generally will look alright on a real device.