Rating Bars
RatingBar.h
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// RatingBar.h | |
// SampleRatingBar | |
// | |
// Created by Prince Kumar Sharma on 08/03/13. | |
// Copyright (c) 2013 Prince Kumar Sharma All rights reserved. | |
// | |
#import <UIKit/UIKit.h> | |
typedef enum | |
{ | |
rb0, | |
rb1_h, | |
rb1, | |
rb2_h, | |
rb2, | |
rb3_h, | |
rb3, | |
rb4_h, | |
rb4, | |
rb5_h, | |
rb5 | |
}RBRatings; | |
@interface RatingBar : UIView | |
{ | |
@private | |
CGSize imageSize; | |
RBRatings ratingPoint; | |
} | |
-(id)initWithSize:(CGSize)size AndPosition:(CGPoint)position; | |
-(RBRatings)getcurrentRatings; | |
-(void)setRatings:(RBRatings)rate; | |
@end |
RatingBar.m
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// RatingBar.m | |
// SampleRatingBar | |
// | |
// Created by Prince Kumar Sharma on 08/03/13. | |
// Copyright (c) 2013 Prince Kumar Sharma All rights reserved. | |
// | |
#import "RatingBar.h" | |
@implementation RatingBar | |
-(id)initWithSize:(CGSize)size AndPosition:(CGPoint)position | |
{ | |
CGRect rect=CGRectMake(position.x, position.y, size.width, size.height); | |
if (self==[super initWithFrame:rect]) { | |
NSLog(@"self frame is %f,%f,%f,%f",position.x,position.y,size.width,size.height); | |
NSLog(@"self frame is %f,%f,%f,%f",self.frame.origin.x,self.frame.origin.y,self.frame.size.width,self.frame.size.height); | |
imageSize=CGSizeMake(size.width/5,size.height); | |
ratingPoint=rb0; | |
int x=0; | |
for (int i=0;i<5;i++) { | |
[self addSubview:[self imageViewWithFrame:CGRectMake(x, 0, imageSize.width, imageSize.height) andTag:i+1]]; | |
x+=imageSize.width; | |
} | |
} | |
return self; | |
} | |
-(void)fillStartillPoint:(CGPoint)point | |
{ | |
if (point.x<imageSize.width/2 && point.x>0) { | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"hf.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"nf.png"]]; | |
ratingPoint=rb1_h; | |
} | |
if (point.x<imageSize.width && point.x>=imageSize.width/2) { | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"nf.png"]]; | |
ratingPoint=rb1; | |
} | |
if (point.x<imageSize.width*2-imageSize.width/2 && point.x>=imageSize.width) { | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"hf.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"nf.png"]]; | |
ratingPoint=rb2_h; | |
} | |
if (point.x<imageSize.width*2 && point.x>=imageSize.width*2-imageSize.width/2) { | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"nf.png"]]; | |
ratingPoint=rb2; | |
} | |
if (point.x<imageSize.width*3-imageSize.width/2 && point.x>=imageSize.width*2) { | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"hf.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"nf.png"]]; | |
ratingPoint=rb3_h; | |
} | |
if (point.x<imageSize.width*3 && point.x>=imageSize.width*3-imageSize.width/2) { | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"nf.png"]]; | |
ratingPoint=rb3; | |
} | |
if (point.x<imageSize.width*4-imageSize.width/2 && point.x>=imageSize.width*3) { | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"hf.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"nf.png"]]; | |
ratingPoint=rb4_h; | |
} | |
if (point.x<imageSize.width*4 && point.x>=imageSize.width*4-imageSize.width/2) { | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"nf.png"]]; | |
ratingPoint=rb4; | |
} | |
if (point.x<imageSize.width*5-imageSize.width/2 && point.x>=imageSize.width*4) { | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"hf.png"]]; | |
ratingPoint=rb5_h; | |
} | |
if (point.x<imageSize.width*5 && point.x>=imageSize.width*5-imageSize.width/2) { | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"ff.png"]]; | |
ratingPoint=rb5; | |
} | |
} | |
-(void)setRatings:(RBRatings)rate | |
{ | |
ratingPoint=rate; | |
if (rate==rb0) | |
{ | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"nf.png"]]; | |
} | |
if (rate==rb1_h) { | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"hf.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"nf.png"]]; | |
} | |
if (rate==rb1) { | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"nf.png"]]; | |
} | |
if (rate==rb2_h) { | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"hf.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"nf.png"]]; | |
} | |
if (rate==rb2) { | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"nf.png"]]; | |
} | |
if (rate==rb3_h) { | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"hf.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"nf.png"]]; | |
} | |
if (rate==rb3) { | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"nf.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"nf.png"]]; | |
} | |
if (rate==rb4_h) { | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"hf.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"nf.png"]]; | |
} | |
if (rate==rb4) { | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"nf.png"]]; | |
} | |
if (rate==rb5_h) { | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"hf.png"]]; | |
} | |
if (rate==rb5) { | |
[[self imageViewAtIndex:1] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:2] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:3] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:4] setImage:[UIImage imageNamed:@"ff.png"]]; | |
[[self imageViewAtIndex:5] setImage:[UIImage imageNamed:@"ff.png"]]; | |
} | |
} | |
-(RBRatings)getcurrentRatings | |
{ | |
return ratingPoint; | |
} | |
-(UIImageView*)imageViewAtIndex:(int)index | |
{ | |
return (UIImageView*)[self viewWithTag:index]; | |
} | |
-(UIImageView*)imageViewWithFrame:(CGRect)rect andTag:(int)itag | |
{ | |
UIImageView *image=[[UIImageView alloc] initWithFrame:rect]; | |
[image setImage:[UIImage imageNamed:@"nf.png"]]; | |
[image setTag:itag]; | |
return image; | |
} | |
// Only override drawRect: if you perform custom drawing. | |
// An empty implementation adversely affects performance during animation. | |
- (void)drawRect:(CGRect)rect | |
{ | |
// Drawing code | |
} | |
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event | |
{ | |
UITouch *touch=[touches anyObject]; | |
CGPoint pt=[touch locationInView:self]; | |
if ((pt.x>=0 && pt.x<=self.frame.size.width) && (pt.y>0 && pt.y<=self.frame.size.height)) { | |
[self fillStartillPoint:pt]; | |
} | |
} | |
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event | |
{ | |
UITouch *touch=[touches anyObject]; | |
CGPoint pt=[touch locationInView:self]; | |
if ((pt.x>=0 && pt.x<=self.frame.size.width) && (pt.y>0 && pt.y<=self.frame.size.height)) { | |
[self fillStartillPoint:pt]; | |
} | |
} | |
@end |
nf.png
ff.png
hf.png
for these file to work.


Using:--
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#import "RatingBar.h" | |
#import "SRViewController.h" | |
@interface SRViewController () | |
@end | |
@implementation SRViewController | |
- (void)viewDidLoad | |
{ | |
RatingBar *ratebar; | |
ratebar=[[RatingBar alloc] initWithSize:CGSizeMake(150, 30) AndPosition:CGPointMake(10, 10)]; | |
[ratebar setBackgroundColor:[UIColor blueColor]]; | |
[self.view addSubview:ratebar]; | |
RatingBar *ratebar2=[[RatingBar alloc] initWithSize:CGSizeMake(200, 50) AndPosition:CGPointMake(30, 100)]; | |
[ratebar2 setBackgroundColor:[UIColor redColor]]; | |
[self.view addSubview:ratebar2]; | |
RatingBar *ratebar3=[[RatingBar alloc] initWithSize:CGSizeMake(100, 20) AndPosition:CGPointMake(25, 70)]; | |
[ratebar3 setBackgroundColor:[UIColor clearColor]]; | |
[self.view addSubview:ratebar3]; | |
[super viewDidLoad]; | |
// Do any additional setup after loading the view, typically from a nib. | |
} | |
- (void)didReceiveMemoryWarning | |
{ | |
[super didReceiveMemoryWarning]; | |
// Dispose of any resources that can be recreated. | |
} | |
@end |
You can have Sample Project
Hi... Prince
ReplyDeleteIt's nice code.. In my app i dont get any value from getcurrentRatings methode call. All time it return 0
wait I am re uploading sample check after uploaded.
ReplyDeleteNow you can download sample and check.
ReplyDeletehi Prince
ReplyDeleteit good !
Hi.. can i set the rate from right to left instead of left to right?
ReplyDelete