Weston
Weston

Reputation: 1491

Best practices when using drawRect

I have recently started creating my own controls and I seem to have a bit of trouble understanding how I should use drawRect.

Basically I have 3 Questions.

  1. Is it a good idea to have conditional drawRect's? ie. different drawing code based on properties or instance variables.

  2. What is the best method for animating changes to the drawRect's drawing? For example, a fuel gauge control with animated fill and un-fill.

  3. And, finally, the examples I have seen for animating with drawRect tend to use timers, is that really a good method in practice? It seems like the heavier apps would have issues with that method.

I guess a 4th would be, is there, perhaps, a better place to do this kind of stuff?

Upvotes: 1

Views: 553

Answers (1)

omz
omz

Reputation: 53561

Is it a good idea to have conditional drawRect's? ie. different drawing code based on properties or instance variables.

Sure, why not? If your drawRect: method becomes unwieldy, you could split it into multiple methods that you then call from drawRect: depending on the properties of your view. E.g. you could have methods like drawBackground, drawTitle, etc.

What is the best method for animating changes to the drawRect's drawing? For example, a fuel gauge control with animated fill and un-fill.

That depends. For very small views, you could call setNeedsDisplay from a timer, but for larger views, you'll often run into performance issues with this approach.

Animating changes is often better done by compositing your view out of multiple subviews or layers that can be animated with Core Animation (or the simplified UIView animation methods).

Upvotes: 2

Related Questions