I was reading the apple guidelines are there is a point which says
iPhone Apps must also run on iPad without modification, at iPhone resolution, and at 2X iPhone 3GS resolution
Does this mean if my app doesn't work perfectly fine on an iPad, it gets rejected? I'm posting this here as I found many contradicting information regarding this.
It means it has to run, not that it has to be optimized for iPad.
There is a big difference in that. You don't have to create iPad storyboard in order to make app run on an iPad - Xcode lets iPad use the iPhone storyboard and open it as if it was an iPhone. The view is then shrunk into a smaller rectangle.
You are aiming for something like this:
Apple has build Xcode in way that when you build and iphone app, it will also be compatible for iPads with 1x and 2x resolution. So you need not worry about creating a separate storyboard for iPad. Hope you find this helpful. Happy coding !
Related
I've just got my iPhone 6 plus and noticed that a lot of the Apple apps are using the iPad version when rotating the phone to landscape. It makes sense since the screen is so large.
So my question is. How do I detect this in Xcode to target iPhone 6 plus phones to run the iPad version of my app?
There is nothing to detect. An app should be written so it doesn't really care what device it is on. Everything should be based on size classes and auto layout.
In the examples you mention (in the comments), most likely what you are seeing are UISplitViewControllers which looks similar on the iPhone 6+ as it does on the iPad.
Just write a proper universal app with one set of screens that properly adapt themselves based on the current size class.
I know that there are several answers for this question, but I was not clear about the result. Here are a few questions:
1) If I created a project as an iPhone project, selecting device as iPhone in deployment info, and designed the app using universal storyboard (i.e any width and any height (600x600) ). Once the design is completed and it is run on an iPad, the UI does not look good. If that is the case then, what's the point in selecting the device as an iPhone? Am I right that when selecting the device as iPhone or iPad, Xcode will allow the app to only run on those devices?
2) Now converting iPhone app to universal app: since image resolution varies from iPhone to universal app, do we have to replace all old images with new images supporting the universal app?
3) If I have an iPhone app, the Apple team will test it, both on an iPhone as well as on an iPad. If they found the UI doesnt match the iPad, will they reject the app?
I would imagine the UI looks just like it does on the iPhone, just enlarged to fit on the iPad. Basically this is because iPhone only apps can be run on iPads, but not vice versa. If you change the app to a Universal app, it will try to run natively on the iPad, and may look better if you have appropriately used auto-layout and size classes.
(Optional other cause) The other option is you're running into an iOS 8 issue where if you use an storyborad or nib for the launch file, it will mistakenly make an iPhone only app work as a Universal one. The use of Launch Screen File in iOS 8.0, 8.0.1 and 8.0.2 will make you universal.
This is a know bug and fixed in iOS 8.1, for you only option is to use assets catalog with a launch images.
Or you can add the device modifier in the Launch file name, like <launchNib>~iphone.nib
As far as images go, you will want to make sure you have images for the different resolutions (#1x, #2x, #3x). If you haven't already, I recommend reading up on asset catalogs (http://schlu.org/2013/10/01/Xcode-Asset-Catalogs.html). Images are not inherently different between iPhone and iPad (except for launch images), but it's the pixel density that really matters (older devices are 1x, most retina devices are #2x, and the 6 Plus is #3x).
If it is truly just an iPhone app, Apple will not reject the app because it looks pixelated and ugly on an iPad. The ability to run iPhone only apps on iPads stems from the initial release of the iPad when people hadn't created iPad or Universal apps yet. Apple basically provides it if someone REALLY wants an app that hasn't been created to specifically support the iPad yet.
That said, I would just go ahead and release it as a universal app. If you don't have revenue reasons for creating separate apps, I wouldn't recommend the extra hassle of having two apps. If course, if your app doesn't make sense on the iPad, simply make it iPhone only.
These are the common practices according to your questions
User interface doesn't depend on deployment devices. User interface depends on your implemented UI logic. As you said, default storyboard size is 600x600 (this could be easily changed), but this doesn't mean, that all devices should be this resolution. When the resolution is different, images and UI elements are misplaced. There are several ways to implement UI logic and make UI flexible, but I guess your question is not about that. So, short answer - devices selections are more about deployment than UI.
It might be some different images for different devices, but images such as buttons or text fields or etc should be flexible.
No, Apple doesn't care about your application appearance and design.
I hope I have answered to your questions.
I have an app whose UI needs quite a lot of screen space. At the moment, it's iPad only, but I think it would be OK on the iPhone 6+. I'd like to make it a universal app but restrict it to iPads and the iPhone 6+. Is there some combination of device capabilities I can set to achieve this?
You can't.
Because iOS 8 supports devices with 3.5" & 4" screens, you can't use the only-support-iOS-x technique.
Also, there isn't a setting in Xcode or a key for requiredDeviceCapabilities which allows you to make the app for iPhone 6+ only.
As you can see in this link there is no capability that isolates the iPhone 6 and 6+.
In this sense you can drop the idea of doing so because you would never pass AppStrore approval for what you are looking for. [added]Unable to use device capabilities[/added] The AppStore leaves you with only TWO device-specific options iPhone (for ALL iPhone models) and iPad (for ALL iPad models) or both.
For that to work without a specific capability the AppStore would need to change (!)
Sorry for bearing bad news :)
Well Signo is righgt.
iOS 8 supports devices with 3.5" & 4" screens, you can't use the only-support-iOS-x technique.
but yes you can do one more thing like for iphone6+, ipad you can continue with lots of screen space.and for other small screen devices you can design screen with required size by help of size class selection.
Hope it helps!!
so today my app was rejected in the app store because of this:
Reasons
2.10: iPhone Apps must also run on iPad without modification, at iPhone resolution, and at 2X iPhone 3GS resolution
Considerations:- This app is an iphone-only, meaning that is the only target that I chose in the tiapp.xml.- This app was already accepted once in the appstore, this is an update.- In my code sometimes I use px for imagens and sometimes DP, but I've tried switching all to DP in this screen and had even worse results.
As far as I can see, there are no errors associated with it (that means the app does NOT crash when you run it in iPad simulator) therefore I'm assuming they rejected it because of a layout problem.
Since this is an iphone-only app, iPad should run the app in compatibility mode, meaning that it might scale it up, but respecting the original sizes.
This is a pic of the app running in a retina simulator (with no problems):
And here's a picture of the app running in a retina iPad simulator (though the result is the same in a non-retina):
As you can see, everything's huge and I have no clue why. I'm running ios7.1, Titanium SDK version 3.3.0.GA and it's a alloy app.
Any help is very much appreciated, thanks.
The point 2.10 reference any resources of app. So, if you have not resources, for example, screenshot before load application, your app will be reject. The iPhone apps should have iPad resources, but iPad apps may be independent.
My problem was not the iPad resources or splash screens. Actually, I was using PIXELS instead of DP in many places in my application. This was not a problem for none of the iPhone versions, but was a problem when iPad tried to run the iPhone-only app in compatibility mode. In any case, now there's also the iPhone 6 with different resolutions so one should never use pixels.
I'm new to iOS development, and I don't use iPhones much. I'm very used to how Android handles emulators and such, but since there are only really two iPhone physical sizes (I know I have to take retina into account, but that's pixels and not size), how do I know which one is showing up on the simulator? If I'm using the iPhone 4S in the simulator, is there a way to use the iPhone 5? Lastly, can I run two simulators at once (you can run many emulators at once with Android). Thanks
You can change/check the simulation's device at
Hardware->Device->iPhone
Screenshot Picture (first pic.)
UPDATE : You can run multiple simulators at once. Look here. I haven't try it myself yet though.