Since iOS 5.0, UIButton and UIBarButtonItem have a tintColor property.
You may have noticed that the tint property is not available for UIButton and UIBarButtonItem.
Two common techniques to change the color, you can find around are drawing button with CoreGraphic or using a stretchable UIImage.
Lately, I found a new technique based on UISegmentedControl which you can use the tint property to change the color of your button. This control can be tweaked to have only one segment with a UIButton style (UISegmentedControlStyleBar).