如何在iPhone 显示一个 星级评分
http://blog.csdn.net/fanjunxi1990/article/details/8663914
由于项目需求,需要做一个列表,里面有各个商品的评分,就是app store里面所有app的星级评分
下面是DisplayStarView.h
- //
- // DisplayStarView.h
- // testExpress
- //
- // Created by Juncy_Fan on 13-3-12.
- // Copyright (c) 2013年 Juncy_Fan. All rights reserved.
- //
- #import <Foundation/Foundation.h>
- @interface DisplayStarView : 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
DisplayStarView.m如下
- //
- // DisplayStarView.m
- // testExpress
- //
- // Created by Juncy_Fan on 13-3-12.
- // Copyright (c) 2013年 Juncy_Fan. All rights reserved.
- //
- #import "DisplayStarView.h"
- @implementation DisplayStarView
- @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];
- }
- - (void)dealloc
- {
- [_emptyColor release];
- [_fullColor release];
- [super dealloc];
- }
- @end
需要怎么去使用呢?很简单,值需要知道评分是多少就OK啦,比如
- //评论是4.2分的
- DisplayStarView *sv = [[DisplayStarView alloc]initWithFrame:CGRectMake(90, 90, 200, 40)];
- [self.view addSubview:sv];
- sv.showStar = 4.2*20;
- [sv release];
- //评论是2.5分的
- DisplayStarView *sv1 = [[DisplayStarView alloc]initWithFrame:CGRectMake(90, 90+40, 200, 40)];
- [self.view addSubview:sv1];
- sv1.showStar = 2.5 * 20;
- [sv1 release];
- //评论是4.8分的
- DisplayStarView *sv2 = [[DisplayStarView alloc]initWithFrame:CGRectMake(90, 90+40+40, 200, 40)];
- [self.view addSubview:sv2];
- sv2.showStar = 4.8 * 20;
- [sv2 release];
运行结果如图所示:

如何在iPhone 显示一个 星级评分的更多相关文章
- 干货之运用CALayer创建星级评分组件(五角星)
本篇记录星级评分组件的创建过程以及CALayer的运用. 为了实现一个星级评分的组件,使用了CALayer,涉及到mask.CGPathRef.UIBezierPath.动画和一个计算多角星关键节点的 ...
- Angular 星级评分组件
一.需求演变及描述: 1. 有一个“客户对公司的总体评价”的字段(evalutation).字段为枚举类型,0-5,对应关系为:0-暂无评价,1-很差,2-差,3-一般,4-好,5-很好 2. 后来需 ...
- js 实现星级评分
最近的项目中有一个星级评分的需求, 自己就写了一下, 由于可能一个页面要用到多个,就采用了面向对象的写法. 用到的png图片也放到这里. js要用到jquery. css: .sr-star{ ...
- js实现星级评分之方法一
利用一个星级评分的小案例,来逐步封装js星级评分插件. 从最基础的js知识,通过一个小的demo,逐步学习js的面向对象知识. 从浅到深,逐步递进. 图片素材 <!DOCTYPE html> ...
- 星级评分进度条(RatingBar)
星级评分进度条(RatingBar):(主要用于评价等方面) 常用的xml属性; android:isIndicator:RatingBar是否是一个指示器(用户无法进行更改) android:num ...
- 用css制作星级评分
Step 1: XHTML <ul class="star-rating"> <li><a href="#" titl ...
- Android 拖动条/滑动条控件、星级评分控件
ProgressBar有2个子控件: SeekBar 拖动条控件 RatingBar 星级评分控件 1.拖动条控件 <SeekBar android:layout_width=" ...
- 原生JS实现-星级评分系统
今天我又写了个很酷的实例:星级评分系统(可自定义星星个数.显示信息) sufuStar.star();使用默认值5个星星,默认信息 var msg = [........]; sufuStar.sta ...
- javascript星级评分(多个)
JS打多个类型星级评分: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...
随机推荐
- stash解决git合并冲突问题
参考博客: https://www.cnblogs.com/juandx/p/5362723.html
- Maven实战错误笔记:使用mvn archetype:generate报错:Unable to add module to the current project as it is not of packaging type 'pom'
在使用mvn archetype:generate生成Maven实战03:HelloWorld中的HelloWorld的项目骨架时报了这个错,从字面上分析是可能与pom.xml文件有关,然后我看了一下 ...
- CentOS 6.5 FTP安装配置
安装配置 rpm -q vsftpd #检查是否安装了FTP yum -y install vsftpd #安装FTP chkconfig vsftpd on #设置开机启动 service vsft ...
- python初学小记
使用PyCharm向世界打招呼! print (“Hello world!”) 介绍自己的基本信息的方法 name = input("name:")age = int(input( ...
- 访问hbase的内部大致流程
hbase 访问表过程.Client(客户端)----->访问ZK(拿到meta表的region位置)----->访问meta 表的region------>拿到user表的regi ...
- VirtualBox新建虚拟机常用配置
1.内存给到1G,不然无法进入图形界面进行分区配置及软件包选择.虚拟机存储记得放到D盘. 2.网络选择桥接模式以便SSH,初次登陆后配置/etc/sysconfig/network-scripts/i ...
- 嘴巴题3 「BZOJ1412」[ZJOI2009] 狼和羊的故事
「BZOJ1412」[ZJOI2009] 狼和羊的故事 Description "狼爱上羊啊爱的疯狂,谁让他们真爱了一场:狼爱上羊啊并不荒唐,他们说有爱就有方向......" Or ...
- Linux 定时任务执行 php artisan
*/ * * * * php /www/wwwroot/project/artisan command:exec postNews 5分钟执行一次
- [Array]189. Rotate Array
Rotate an array of n elements to the right by k steps. For example, with n = 7 and k = 3, the array ...
- TZ_09_自定义Spring-security
1.Spring Security 的前身是 Acegi Security ,是 Spring 项目组中用来提供安全认证服务的框架 2.安全包括两个主要操作. “认证”,是为用户建立一个他所声明的主体 ...