Developing iOS user interfaces programmatically - ios

I've been developing iOS apps for the past 3 years and learned to do so without the use of nibs and storyboards. With the release of iOS 8 and the new iPhones there are ALOT of factors to take into account when developing for iPhone and even iPad devices (Resolution, Screen size, etc.).
The first problem I ran into with Xcode 6 is you can't create a empty project anymore. The closest option is a single view application. I found the following answer here.
Now it seems that apple is really pushing auto-layout, the use of the size classes and the use of storyboards and Interface builder. Is there any way to support the native resolutions of the iPhone 5, 6 and 6 plus and do this programmatically? The only option I can see is defining the frame of each UI element for each device which will lead to a ton of code.

Auto layout IS programmatic. Apple has given the necessary API's to handle size classes entirely in code if you don't want to use interface builder or storyboards and there has always been ways of adding constraints in code too.
You might think IB is a silly tool for noob developers or is only for basic apps and you need more power or whatever your reason, but maybe trying to do every thing yourself in code is a bet you have now lost. Give tools a try.

It's referred to as VFL or Visual Format Language.
VFL Tutorial

Related

Xcode8 Controllers are Grey which are designed in Xcode 7 with size classes

I am making my iOS Application Compatible with iPad.I have designed the UI of my Application with Xcode 7 with size classes which is more specifically designed for iPhone, Now i have to upgrade it to support iPad also.
Now with Xcode 8 when i select iPad from Storyboard with Device Pan then most of the controller are Greyed i.e. those controllers are not showing on iPad on the device also and on the Storyboard also. Please check the screenshot for that
I know the reason why they greyed out, because they are designed with size classes for a different size.
Now my question is, is it possible somehow to use this controller for iPad without Redesigning the UI and updating the Auto layouts, as of now i am not seeing any way to make this controllers available for iPad.
Also i have tried with a way but i think that will be very long, I have to delete this controllers and then add it back and set the layouts again.
Also another way would be design separate storyboard.
So please suggest me what will be a better solution to overcome from this.
Thanks
Even after compatibility conversion to Xcode 8, if still it doesn't seem to work, then you need to check if there are any leftovers like below:
If you want to make sure it works with any width and height, find the constraint:
and remove it by clicking on the x, leaving only installed checked:
That should solve it for Xcode 8.

First iOS app for all iphone devices

I'm trying to make my first iOS app in xcode 7 for iOS 9
and i want to make it for all the iphone devices like iphone 4,4s,5,5s,6.
Do i have to make a different xib file for each one of the iphone or there is a simple way to make it for EVERY iOS device also like iPad???
There's a magical thing called autolayout. And another thing called universal app
You Can do both in single storyboard first you have to choose Universal while creating project. You need to do autoresize or apply auto layout.
No, you shouldn't need to do device or resolution detection. iOS includes lots of features for adaptive user interfaces. See here for example: https://developer.apple.com/design/adaptivity/
You just use auto layout concept in your application and you will find lots of document on net for auto layout and re sizing class.
You can make one app for all device using autolayout and make your app universal and in xcode 7 and ios 9 there is new feature available stack view using this you can do this.

Do we need Separate Storyboards for all iPhone/iPad Devices?

I am trying to find answer, That Since we have iPhone 4, 5 ,6, 6 plus (I heard some rumors about iPhone 6 mini too) do we need Different Storyboards?
Earlier I use to make the Applications using XIB files only. Taking one XIB for iPhone 4 and 5 and using autoresizing to make them Compatible for both devices. If I had to make the same application for iPad also, I had to take the different XIB.
After Xcode 6.1 release I started using the StoryBoards and auto-layout, Size Classes. I made an app that was for all iPhones and iPad. I used a single Storyboard for iPhone and iPad and got success. But doing this was very time consuming.
From now on Should I make different Storyboards? Like one for iPhone 4 and 5, another one for iPhone 6 and 6 plus? Because Some time the UI's are too complex that using auto-layout or auto-resizing on the same Storyboard for all devices just destroy the beauty of the UI.
Please Suggest. And I have gone through some Stack answers that are not much Convincing.
In my opinion, different storyboards for iPhone/iPad is necessary only if you gonna provide large different layout for them.
The basic rule is how many views have different layout? Totally or just few views?
If the answer is 2 of 30 or kind of that, make a second viewcontrollews layout with same "custom class" but different "Story ID" is enough.
The answer to your question is: No, we do not need separate storyboards. The answer to your question of whether you should make different storyboards is not so simple.
Basically it is a decision you will make based on your judgement. There is no correct answer. I'd suggest you start with one and if things start getting messy, create a second one. Just don't make the first storyboard too big before you decide if you need to split it out into two or not. It really depends on how different your designs are.

Storyboard for all screen size

There is possible to add storyboard for any screen size?
Example if the iPhone is 6 plus load storyboard 1 if is iPhone 5 load storyboard 2.
Yes it's possible, although I would not recommend it. In fact I would strongly recommend against it.
It is a lot more work to develop in the first place, is a lot more error-prone, and is also a lot more work to test and maintain, and makes it possible to have platform-specific bugs when you have different configurations for each screen size.
With the size classes added in iOS 8 Apple has made dealing with different sized displays easier and cleaner. They are pushing developers away from separate storyboards for iPhone and iPad and towards a single storyboard that manages all platforms.
Try having one storyboard with a universal path then splitting the path using segues based on the phone you are using. I made a cocoapod for screen sizes that might be useful for you.
Here's a tutorial

xCode layouts not scaling correctly

I am trying to create a universal app capable for all devices, but it is not scaling correctly. Below (the correct version) is a screenshot of my iPhone 5s, and the one that is out of scale is a screenshot of my iPad 2.
Am I doing it correctly making it scale? Or should I use 2 storyboards and assign one to iPhone, and one to iPad?
Its good to make two different xib. But for small screen you have to apply proper auto sizing then it will not be a problem. You can use this for example
For Section 1:
For Section 2:
For Section 3:
and
For Section 4&5:
The better way of doing this is making two separate storyboards. One for iPhone and other for iPad. This offers you the flexibility to play with both in your own ways and there are many cool things that you can work out with iPads. And to do that, you need separate storyboards in your app. It eliminates the dependency between the look and feel of both the devices.
For making two storyboards the easy way, see this :
How/whether to make a universal storyboard in Xcode
For the selection of appropriate storyboards based on devices, check this :
Selecting different storyboards based on device type
This might help you immensely.

Resources