我们在开发工程中经常会遇到评分的功能,下面我提供的方法只能用来显示,暂时不支持点击变化
//
// StartView.h
//
// Created by Will han on 16/3/31.
//
#import <UIKit/UIKit.h>
@interface StartView : UIView
{
CGFloat _starSize; /* 根据字体大小来确定星星的大小 */
NSInteger _maxStar; /* 总共的长度 */
NSInteger _showStar; //需要显示的星星的长度
UIColor *_emptyColor; //未点亮时候的颜色
UIColor *_fullColor; //点亮的星星的颜色
}
@property (nonatomic, assign) CGFloat starSize;
@property (nonatomic, assign) NSInteger maxStar;
@property (nonatomic, assign) NSInteger showStar;
@property (nonatomic, retain) UIColor *emptyColor;
@property (nonatomic, retain) UIColor *fullColor;
@end
//
// StartView.m
// MeiMeiDu
//
// Created by Will han on 16/3/31.
//
#import "StartView.h"
@implementation StartView
@synthesize starSize = _starSize;
@synthesize maxStar = _maxStar;
@synthesize showStar = _showStar;
@synthesize emptyColor = _emptyColor;
@synthesize fullColor = _fullColor;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
self.backgroundColor = [UIColor clearColor];
//默认的星星的大小是 13.0f
self.starSize = 13.0f;
//未点亮时的颜色是 灰色的
self.emptyColor = [UIColor colorWithRed:167.0f / 255.0f green:167.0f / 255.0f blue:167.0f / 255.0f alpha:1.0f];
//点亮时的颜色是 亮黄色的
self.fullColor = [UIColor colorWithRed:255.0f / 255.0f green:121.0f / 255.0f blue:22.0f / 255.0f alpha:1.0f];
//默认的长度设置为100
self.maxStar = 100;
}
return self;
}
//重绘视图
- (void)drawRect:(CGRect)rect
{
// Drawing code
CGContextRef context = UIGraphicsGetCurrentContext();
NSString* stars = @"★★★★★";
rect = self.bounds;
UIFont *font = [UIFont boldSystemFontOfSize:_starSize];
CGSize starSize = [stars sizeWithFont:font];
rect.size=starSize;
[_emptyColor set];
[stars drawInRect:rect withFont:font];
CGRect clip = rect;
clip.size.width = clip.size.width * _showStar / _maxStar;
CGContextClipToRect(context,clip);
[_fullColor set];
[stars drawInRect:rect withFont:font];
self.backgroundColor = [UIColor greenColor];
}
@end
下面是调用方法
StartView *myStartView = [[StartView alloc]initWithFrame:CGRectMake(0, 0, 217, 21)];
myStartView.showStar = 4.2*20;
[cell.startView addSubview:myStartView]; //评论是4.2分的
效果图: