views:

2985

answers:

5

In Google groups and some other web sites, there is a 5-star rating component which is pretty neat, such as in this url: http://groups.google.com/group/Google-Picasa-Data-API/browse_thread/thread/b5a346e6429a70a7?hl=en

I am wondering whether there is an existing 5-star rating component in the iPhone environment. Or if there is not, if anyone has clue where to start?

Thanks

+3  A: 

I don't know of any free/available components off the top of my head, but if nobody offers one up and/or you can't find one you like, it should be fairly trivial to roll your own. In the simplest terms, you would only have to:

  1. Create/Find a star icon - one outline (unselected), one filled
  2. Create a UIButton and set the icons for the selected/unselected states
  3. Create a container view that held your x stars and when one was selected, the container could set the selected state on any button to the left of the touched button.

Shouldn't take long at all to build...

Jason Coco
+1  A: 

I would probably implement this using a UIView with custom touchesXXX messages, so that the user could, for example, touch the first star and drag out a four-star rating. Just my $0.02.

Ben Gottlieb
+1  A: 

As a general rule, if it's not in the Interface Builder, it's not available "for free," and you'll have to write it yourself.

When it comes to the iPhone, Apple has also provided easily understood sample code that shows off every single available component and how to use them. If you don't see it in their code, you have to build it yourself.

August
+4  A: 

I'd go simpler. Subclass UIControl and implement the touchesBegan: touchesMoved: and touchesEnded: methods. You can determine which star the user pressed/dragged/let up on with the X coordinate of the touch. For example:

CGFloat relativeTouchLocation = [event locationInView:self] / self.bounds.size.width;

Then it's just up to you to determine which stars are illuminated based on that value. Oh, and to send a UIControlEventValueChanged event.

Obviously, you also override drawRect: to draw the stars in the view.

Although Jason's solution above will work, your user won't be able to slide her finger across the control to fine-tune her rating. This would also give you the option of doing half-stars or other fine adjustments.

Alex
Just a heads up - your solution worked perfect for me. Thanks.
Hunter
+4  A: 

UIView that allows you to build Rating components to provide the same kind of experience AppStore or Youtube applications on iPhone do.

http://code.google.com/p/s7ratingview/

Aleks N.
sweeeeeeeeeeeeet
sbwoodside
The s7ratingview is shifted on GitHub - http://github.com/eisernWolf/TouchCustoms
Sagar