Hi,
I do agree that IB isn't great at all, but for many things, not that bad either, provided that you learn how to use it.
I think many people complain about IB are mainly "pure programmers", who have much less understanding of pure design thinking and problems ...
I believe IB and storyboard were created to allow teams to work together, having designers mock up the interface and rules (especially with UIStack, size classes, and so) in IB, then let programmers just hook the code.
Of course, it could be much better, both on usability (hints, a look simulation before you drop something, more meaningful alerts), and there are still a lot of inherent bugs (when you delete a constraint, it actually stays there, greyed out, causing errors and screwing look sometimes, also private framework classes not loading if the framework source isn't in the project, etc).
I propose learning IB if you're going to work with it (aka targetting Apple's devices only), there is practically nothing I can do in code I can't do in IB besides adding/removing items from server or so.
Hopefully this should get better if Apple listened a bit more to compplaints, I've never got any feedback for enhancement proposals, but seems if many people propose the same in Bug Reporter (lol?) it gets considered more quickly.
@HyperNovaSoftware
I do everything in code so I can place everything exactly how I want it.
IB is a complication I'd rather not deal with.
??? Really?
I'd understand people doing everything in code ... 5 years ago, but now?
That's exactly what gives bad results and interfaces that are completely disconnected from reality in terms of design advancement and current devices thinking.
I'd suggest leaving designers deal with the design, in IB rather than thinking everything can be solved in code. Unless of course you enjoy delivering updates to your clients each time Apple releases a new screen size).
IB gives you more feedback on layout that you'll ever get in code. It allows you to see in real time all different devices in all orientatons and split situations.
(I work with my preview pane loaded with each simulator twice, one per orientation ... Designing the interface and getting feedback has never been easier).
Not only there is no special complications, provided you understand design (but I guess it's easier for me as I am originally designer and worked with countless design software, so I feel actually underwhelmed in IB, but I believe even a programmer can get the handle of it in a day, as I am teaching my company's junior staff and they feel at home after a week), but it also allow you to get ahead with future sizes by having "Size Classes" and previews of stripes (1/3rd portrait iPad for ex, which is a very long iPhone basically), you can't do that in code, unless you work only with percentage (which still isn't enough, as you never know if "10%" of the hight is a lot or not).
Hope you give it a try in any free time of yours, it can not only boost your productivity but result in more intuitive and "fluid" interfaces for your users witjout you having to code everything.
@bob133
Agree with you 100%. It's not the most intuitive (or robust) system out there, but once you get the hang of it, it's a breeze.
Believe me, it can be VERY robust (much more than most of the rival solutions from other companies).
I can't tell you how much impressed I was when I found out you can load a whole interface in a private view (I make private/internal SDKs for my game company, and to experiment with Xcode 6/7 new "module", I made a card game in IB only, then imported other games of the company, previously exported as frameworks/module for test purposes only ... then each card on screen, which was a simple UIView, was loaded in IB by one module/game's main class ... I couldn't believe my eyes to see games rendering in IB, and becoming fully playable games while acting as normal view, responding to constraint and sizes).
@bob133
And I don't have to deal as much with those stupid translatesAutoresizingMaskIntoConstraints calls.
Not only, but it helps in many other points:
- Portability: You can duplicate a view very quickly, and modify the class attached to it (pretty good when you have a custom template)
- Memory leaks: Many elements can be controlled purely in IB with no need to have them as property in code, which reduces the risks of memory leaks.
- Rendering Cycle: You respect the rendering cycle, and you avoid any mistake or loop calling to "viewDidLayoutSubviews" and so ... Animations and scaling are also much smoother in respect to rotation and screen slitting, nothing gets out of sync.