It is better (and advised by Apple) not to subclass UIButton if you can. Most custom appearances can be achieved by setting a background image to a standard "custom" button. This way you still get the functionality of resizing, the label, the image etc. without needing to subclass. A button has a background image, an image and a title label - how and by what these components are drawn is not publicly available.
If the image is derived at run time, you can still use the above technique, but draw in a new graphics context, extract the image and use that instead.
If you really must use a drawRect method, I'd subclass UIControl rather than UIButton.