I decided that I needed a place to keep track of the tools/tips/techniques (can we call that T3?). Then I thought it would make a good blog post. Then I realized it’s been almost two years since I’ve posted anything. So here’s a post and something I intend to update as I use new tools.
This is mostly for my reference, but it might come in handy for someone else…
 
xcodeiconXcode – The official developer environment for developing iOS and Mac Apps. There are some alternatives, but they seem like more trouble then they’re worth, and still needs to link into the core Xcode tools (like the compiler) to get things done.
Xcode also allows for plugins two of which I’ve started using recently:
Alcatraz – The one plugin to rule them all sort of thing. It has it’s own “network” which I usually try to avoid, but due to the more manual nature of most plugin installations, this seems worth it to keep it all cleaner.
VVDocumenter-Xcode – This is one of those things that does something so simple, yet can save you so much time. It will auto-generate the documentation skeleton for a method in a format the Xcode can read, so it’s one less excuse to not document your code. And we all can use one less excuse to not doc our code.
 
sketch3icon
Sketch 3 – I use this for all my graphics needs. I used to use Adobe and Illustrator, and when I say “used” I mean “beat my head against”, for years. The pros that use these tools can make them sing and dance, but I’m not one of those people. In an afternoon with Sketch I was able to do more things quicker than the entire time I spent with the Adobe stuff. It works for me. From general UI/UX Prototyping to just playing with some graphics, it just feels right and I’ve only scratched the surface. There’s a growing community and it’s extensible with tons of plugins (or write your own). If you don’t absolutely need Adobe tools, I can’t recommend Sketch enough for your graphics needs.
 
PaintCodePaintCode – This genius of a program lets you draw your graphics, and it will then generate the source code for you. Why would one need this? Well for doing complex dynamic UI elements for one, imagine having a variable gradient arc that sweeps from one side to another and changes colors, could you do that with static images? Or even just for icons that you use in the app, by doing it in code you can make it so you can change the size or the color (or even the shape) at run time depending on the needs of the user.  It’s a little spendy, but it has paid for itself several times over in saving the time it would take of lots of trial and error code/compile cycles to get shapes right. If you do any kind of custom drawing in your apps, get this.
 
textwranglericonTextWrangler – A very good general purpose text editor. It’s code aware for all sorts of different languages, has great reg-ex support, and best of all: it’s free!
 
 
sqliteiconSQLite Professional – This is an SQLite database file editor, a must if you’re doing anything but the smallest Core Data operations. Great for checking that your data actually is what you think it is.
 
 
JIRA – An Issue and Task tracker that I have been using for years.  More thanjira_icon_0 once I’ve show a client how wonderful this is and have helped them bring it on site.  I run a personal version for myself (only $10 for up to 10 users) or they have cloud options if you don’t feel like maintaining the server/database yourself. Free trials, give it a go. It can be overwhelming at first, but it’s incredibly customizable and can certainly be tailored to your needs and flow.
 
Evernote-logo-e1362251497276Evernote – I put this here because I’m trying it, again. Some people love it, some people don’t. I’m in between, but by all accounts, I’m not using it right. Some could argue that you should be able to use a tool how you want, that’s how you know if it’s truly useful. I can’t agree with that, you wouldn’t use a saw to drive a nail, does that make it not useful? So giving it another go…

I’ve been playing around with developing a custom iOS component and have stumbled upon something very strange. What lead me here was the idea that my component should have the same look and feel as the standard components provided by the iOS APIs.
So here I was coding along and testing things out and I wanted to add a UIToolbar:
UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0.0, 0.0, frame.size.width, 30.0)];
Very straight forward. But when I fired this up in the simulator the bar was tinted blue, not like the light gray that is showing for the other bars (UINavigationBars, specifically) that I’m using already and that I want to mimic. Ok, let me try with a UINavigationBar, since I’m using those already:
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0.0, 0.0, frame.size.width, 32.0)];
Blue again…WTF? Now at this point a reasonable person would say something to the effect of “Screw this, I’ll just set the tintColor myself!”, and that’s what I did. But I was unable to get the color set to the right values to duplicate the default colors provided. I was close, but there’s no reason I shouldn’t be able to outright copy it. Now I’ve got to know what’s going on.
After spending a fair amount of time trying to figure out what the default tintColor values are (in a default state tintColor = nil, so I couldn’t just look at an existing component) and failing I started seeing what was different between the default UINavigationBar that I was already using and the one I was creating. Well the obvious difference was the height, default is 44, I was setting it to 30. So I set it to 44:
UINavigationBar *navBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0.0, 0.0, frame.size.width, 44.0)];
DING! It’s the light gray tint that I wanted, but why? Well, I don’t know, I did more poking around and could find zero mention of a correlation of the height of the components and their default tint color. So that’s why I’m writing this, so at least there’s some mention of this. Perhaps someone will pick up on this and point out something obvious that I’m missing, we’ll see.
I did more poking around and found that if the height is 32 or less, then it was blue, if greater that 32 (well, technically, greater than 32.000001) then it was light gray. The only reason I could think of this being a Good Idea™ is that 32 is the default height for the bars on the iPhone. But then this tintColor change should be tied to what device it’s actually running on, not some arbitrary height value.
I have every intent of searching RADAR and filing a report, but as it is I can’t seem to login, so I filed a bug report for the bug reporting system, of course. I’ll update this post if I found out more info.