When numberOfLines = 1 and the text is automatically resized for being too small, the frame size is large enough to fit 2 lines of text (even though only 1 line is displayed).
What needs to be done is to change the textRectForBounds: method to pay attention to "numberOfLines" property, which it currently doesn't.