Some classes (UIAlertView and UISwitch, most particularly) aren't very flexible in terms of appearance customization, so I had to reimplement them to achieve desired effects. Using them is more difficult: to use an FUISwitch (my UISwitch clone) you have to replace any UISwitches in your app with FUISwitches (also, if you were using categories/subclasses of UISwitch to do some custom stuff, they would break).
Moving logic to a base class isn't really possible, as most of those classes already inherit from UIControl (and I'm not crazy/motivated enough to reimplement them all from scratch - UIKit is awesome, and I want to lean on it as much as possible).
The single header totally makes sense, I'll be sure to add that.
TL;DR: UIKit is great, I don't want to reinvent the wheel, categories are really easy to integrate into existing projects.
I couldn't find an email address in your profile or website. So, on a separate note... I've run into a couple bugs on y'alls app.
<List of things apparently fixed in latest update>
Oops!
I'm using CoreGraphics for a lot of stuff here, just not actually in the controls' drawRect methods. Rather, I use CoreGraphics to produce UIImages of various sizes/shapes/colors and then use the appearance methods provided by each UIControl (e.g. setBackgroundImage) to style existing UIKit controls with said image. So there aren't any external images included in the project. I prefer this approach, as it minimally interferes with each control's existing/desired behavior (not to feed the trolls, but one of the weaknesses in the "Apple wouldn't approve of this" argument presented elsewhere in the comments is that I'm almost entirely just using existing classes/appearance customization APIs provided by UIKit).
On top of that, you have to reinvent all the native components you otherwise would get for free, and your app looks like an ugly odd duckling on the platform.
Why do this? It demonstrates an insane level of condension towards your users, the platform they've chosen, and the time they've spent learning it.
You know what else you get by coding your own UI components that mimic native components? A greater knowledge of the underlying platform. Even if you and everyone else hates the end results, the creator has increased his knowledge, which is more valuable than your troll.
Yes, there's a slight difference, but I think you're making a mountain out of a molehill here.
I call BS.
Does Letterpress also exhibit a "total disregard for platform conventions"? Does Google Maps iOS app? Does Clear (the TODO app)? Does Paper? Even if so, the users are more than happy with them, and tons of other similar apps besides.
It's not 1993 and this is not Mac Word 6.0. In iOS apps are MEANT to be visually distinct and try new interaction paradigms.
Heck, even Apple has stopped advocating the blind devotion to the User Interface Guidelines document, and experiments itself with different looks (and sometimes feel) from app to app. And this has been going on for at least 5 years.
Besides, this project merely adds new visual look. Underneath it uses the regular widgets (it adds Obj-C categories to change the visual appearance), so it's just a new "theme", not a new "feel".
>On top of that, you have to reinvent all the native components you otherwise would get for free
Errr, that's kind of the whole point.
>and your app looks like an ugly odd duckling on the platform.
Or like a special unique snowflake. Like Clear. Or Paper. Or tons of other apps.
>Why do this? It demonstrates an insane level of condension towards your users, the platform they've chosen, and the time they've spent learning it.
I only discern an insane level of pissing on others people work, that they also provide for free as open source and you can very much choose not to use it or not buy any app that uses it. That, and an insane level of self-righteousness (on this response, not on the project).
If anything, they have made flat UI a convention in itself, just like pull-down-to-refresh, large center tab buttons and slide-right navigation weren't originally/aren't native widgets, but have become commonplace.
The rumor is that iOS 7 is going to change to a flatter appearance anyway, so in a few weeks this all might be moot.
And a handsome one, at that.
--
Please stop wasting time on pretentious designer bullshit like this. Skinning is great for in-game HUDs, but making a regular repeated-use app look completely alien against native look and feel is one of the worst things one can do.Some customizations here and there are fine and all successful apps notable for their UI do it to a degree. This is what gives an app its personality and character, but note that it's done through meticulous visual polish and attention to details. On the other hand, if you are running on a device that uses inherently skeuomorphic styling and a specific font, then going all flat, green and Proxima Nova is like walking into a cocktail party in flip-flops and a pirate hat. Sure, it will give some people a chuckle and make everyone notice, but it will also make you look like an eccentric dork. And sure as hell it will make hosts think twice about ever inviting you again.
I personally had to fork the DCRoundSwitch project to make it more FlatUI like. I am glad there are other efforts out there to help grow this component set.
This is definitely a step above using drawRect: to draw custom views, when images are more efficient in this case thanks to UIControl.