I have created my first Xamarin Forms App targetting UWP and IOS.
The UI was originally designed for UWP to target a 1920x1080 screen and when IOS on an iPad was added we identified that the ones we are interested in have a minimum of 2048x1536 screens, so the same design should fit onto the iPad quite comfortably.
Unfortunately, when the app is deployed to a brand new iPad and even iPad Pro then the UI shows effectively 1024x768.
The UI does allow for low resolutions but we don't want to be restricted to such a ridiculous resolution as 1024x768 when we have 2048x1536 available on the iPad and 2732x2048 available on the iPad Pro
So the app is scaling to 2x or 3x, (which is terrible on the iPad Pro).
I have seen many suggestions to use a LaunchScreen.xib to tell iOS that the app is allowed a resolution but when I try to research this I find that it is deprecated. I created a LaunchScreen.storyboard but this has not helped.
So my (2-part) question is as follows...
Is there actually a way to convince iOS to use 1x scaling?
If so could anyone point me in the direction of some current documentation about how to make it work?
After much investigation and hair pulling it would seen that iOS just "knows" how big its physical pixels are and it won't let you switch off scaling.
Our next best course of action was to reduce font sizes by 20%, cut back on whitespace and then finally explicitly change what still didn't fit.
Related
I have an app being developed in React Native and on compilation, it looks good in iPhone 7 but gets jumbled in iPhone X. I understand there has been size and resolution changes from iPhone 7 to iPhone X and read about something called, safe area. Tried to fix using those but not sure how to approach this issue. I am not an app developer so..
This is a problem when autoscaling is on by default which is the case with React Native based apps. You either can turn it off to turn off the accessibility entirely or work with app layout to make sure it can handle bigger fonts when the fonts are made bigger through phone settings for people with eye issues.
I am making an iOS 10 ONLY Universal App. Being a developer with poor image-handling skills, it has become too troublesome to generate the splash screen images for me. I guess that's some work for the "designers".
Nevertheless, i have to do it and I need help because what i have made doesn't work fine with the iPhone SE.
I don't care about older devices and operating system versions, but i want to cover every device that can run iOS 10. so forget iOS 6,7,8,9.
Btw, i am using Xcode 8, so forget all about Xcode 5,6,7.
There's too much of confusing content for new developers often wasting their time while they read about older versions and which might not be quite applicable anymore.
I have read the following posts/guides already.
What are the sizes used for the iOS application splash screen?
Image resolution for new iPhone 6 and 6+, #3x support added?
Image sizes required to support all iPhone devices
How to handle image scale on all the available iPhone resolutions?
Use vector artwork for iOS launch image in asset catalog?
The first SO post is so outdated, people are talking about iOS 6 & 7,
and iPhones 6, 6+, 5S, 5, 5C, 4S, 4 and the various iPads.
But no one mentioned/talks about iPhone SE.
The second SO post is also quite outdated, people are talking about iOS 7 & 8, and iPhone 6 and 6+ are mentioned.
Even though i figure out the size, there is a filenaming/convention issue.
I am looking for a table that clearly states the filename, image size(resolution) and the devices it will be applied to.
As usual, Apple's documentation provides good detail about image resolution but nothing about filename.
link -> https://developer.apple.com/ios/human-interface-guidelines/graphics/launch-screen/
I wonder if the filenames matter? I can easily modify the Contents.json file i think.
Is there some tool where i can provide my logo in vector (SVG) format
and it gives me all the splash screens with my logo in the center (with the correct filenames!)
I believe the iPhone 5/5C/6/6S/6+/7/7+ are the only 7 iPhones that support iOS 10. (i checked Wikipedia) Did i miss something?
In a universal app, is making images for iPads mandatory?
Why doesn't everyone use and everyone allow using vector images directly? I hope i can use SVG, and it is easy enough, it looks like currently that is infeasible. correct if i am wrong.
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 am building a 2D game in Unity and wondered if anyone could provide some insight into how it renders on the iPhone 6 plus.
I assumed if I didn't add the Launch Screen file Xcode would build it at iPhone 5 resolution as it does with all other apps, however this doesn't seem to be the case. I have tested the game against all other iOS screen devices (both iPhone and iPad) and the game maintains perfect scale, but as soon as I run it on a 6 plus all of the assets seem to scale down (appear much smaller).
My question is, is there a way to stop this from happening, either in the editor(s) or in code? My first thought was to increase the game scale but not sure this is the best way to go. I am using unity 4.6 RC1.
Thanks in advance.