http://blog.csdn.net/fanjunxi1990/article/details/8663914

由于项目需求,需要做一个列表,里面有各个商品的评分,就是app store里面所有app的星级评分

下面是DisplayStarView.h

  1. //
  2. //  DisplayStarView.h
  3. //  testExpress
  4. //
  5. //  Created by Juncy_Fan on 13-3-12.
  6. //  Copyright (c) 2013年 Juncy_Fan. All rights reserved.
  7. //
  8. #import <Foundation/Foundation.h>
  9. @interface DisplayStarView : UIView
  10. {
  11. CGFloat _starSize;        /* 根据字体大小来确定星星的大小 */
  12. NSInteger _maxStar;      /* 总共的长度 */
  13. NSInteger _showStar;    //需要显示的星星的长度
  14. UIColor *_emptyColor;   //未点亮时候的颜色
  15. UIColor *_fullColor;    //点亮的星星的颜色
  16. }
  17. @property (nonatomic, assign) CGFloat starSize;
  18. @property (nonatomic, assign) NSInteger maxStar;
  19. @property (nonatomic, assign) NSInteger showStar;
  20. @property (nonatomic, retain) UIColor *emptyColor;
  21. @property (nonatomic, retain) UIColor *fullColor;
  22. @end

DisplayStarView.m如下

  1. //
  2. //  DisplayStarView.m
  3. //  testExpress
  4. //
  5. //  Created by Juncy_Fan on 13-3-12.
  6. //  Copyright (c) 2013年 Juncy_Fan. All rights reserved.
  7. //
  8. #import "DisplayStarView.h"
  9. @implementation DisplayStarView
  10. @synthesize starSize = _starSize;
  11. @synthesize maxStar = _maxStar;
  12. @synthesize showStar = _showStar;
  13. @synthesize emptyColor = _emptyColor;
  14. @synthesize fullColor = _fullColor;
  15. - (id)initWithFrame:(CGRect)frame
  16. {
  17. self = [super initWithFrame:frame];
  18. if (self)
  19. {
  20. self.backgroundColor = [UIColor clearColor];
  21. //默认的星星的大小是 13.0f
  22. self.starSize = 13.0f;
  23. //未点亮时的颜色是 灰色的
  24. self.emptyColor = [UIColor colorWithRed:167.0f / 255.0f green:167.0f / 255.0f blue:167.0f / 255.0f alpha:1.0f];
  25. //点亮时的颜色是 亮黄色的
  26. self.fullColor = [UIColor colorWithRed:255.0f / 255.0f green:121.0f / 255.0f blue:22.0f / 255.0f alpha:1.0f];
  27. //默认的长度设置为100
  28. self.maxStar = 100;
  29. }
  30. return self;
  31. }
  32. //重绘视图
  33. - (void)drawRect:(CGRect)rect
  34. {
  35. // Drawing code
  36. CGContextRef context = UIGraphicsGetCurrentContext();
  37. NSString* stars = @"★★★★★";
  38. rect = self.bounds;
  39. UIFont *font = [UIFont boldSystemFontOfSize:_starSize];
  40. CGSize starSize = [stars sizeWithFont:font];
  41. rect.size=starSize;
  42. [_emptyColor set];
  43. [stars drawInRect:rect withFont:font];
  44. CGRect clip = rect;
  45. clip.size.width = clip.size.width * _showStar / _maxStar;
  46. CGContextClipToRect(context,clip);
  47. [_fullColor set];
  48. [stars drawInRect:rect withFont:font];
  49. }
  50. - (void)dealloc
  51. {
  52. [_emptyColor release];
  53. [_fullColor release];
  54. [super dealloc];
  55. }
  56. @end

需要怎么去使用呢?很简单,值需要知道评分是多少就OK啦,比如

  1. //评论是4.2分的
  2. DisplayStarView *sv = [[DisplayStarView alloc]initWithFrame:CGRectMake(90, 90, 200, 40)];
  3. [self.view addSubview:sv];
  4. sv.showStar = 4.2*20;
  5. [sv release];
  6. //评论是2.5分的
  7. DisplayStarView *sv1 = [[DisplayStarView alloc]initWithFrame:CGRectMake(90, 90+40, 200, 40)];
  8. [self.view addSubview:sv1];
  9. sv1.showStar = 2.5 * 20;
  10. [sv1 release];
  11. //评论是4.8分的
  12. DisplayStarView *sv2 = [[DisplayStarView alloc]initWithFrame:CGRectMake(90, 90+40+40, 200, 40)];
  13. [self.view addSubview:sv2];
  14. sv2.showStar = 4.8 * 20;
  15. [sv2 release];

运行结果如图所示:

 

如何在iPhone 显示一个 星级评分的更多相关文章

  1. 干货之运用CALayer创建星级评分组件(五角星)

    本篇记录星级评分组件的创建过程以及CALayer的运用. 为了实现一个星级评分的组件,使用了CALayer,涉及到mask.CGPathRef.UIBezierPath.动画和一个计算多角星关键节点的 ...

  2. Angular 星级评分组件

    一.需求演变及描述: 1. 有一个“客户对公司的总体评价”的字段(evalutation).字段为枚举类型,0-5,对应关系为:0-暂无评价,1-很差,2-差,3-一般,4-好,5-很好 2. 后来需 ...

  3. js 实现星级评分

    最近的项目中有一个星级评分的需求,  自己就写了一下, 由于可能一个页面要用到多个,就采用了面向对象的写法. 用到的png图片也放到这里.    js要用到jquery. css: .sr-star{ ...

  4. js实现星级评分之方法一

    利用一个星级评分的小案例,来逐步封装js星级评分插件. 从最基础的js知识,通过一个小的demo,逐步学习js的面向对象知识. 从浅到深,逐步递进. 图片素材 <!DOCTYPE html> ...

  5. 星级评分进度条(RatingBar)

    星级评分进度条(RatingBar):(主要用于评价等方面) 常用的xml属性; android:isIndicator:RatingBar是否是一个指示器(用户无法进行更改) android:num ...

  6. 用css制作星级评分

    Step 1: XHTML <ul class="star-rating">       <li><a href="#" titl ...

  7. Android 拖动条/滑动条控件、星级评分控件

    ProgressBar有2个子控件: SeekBar   拖动条控件 RatingBar   星级评分控件 1.拖动条控件 <SeekBar android:layout_width=" ...

  8. 原生JS实现-星级评分系统

    今天我又写了个很酷的实例:星级评分系统(可自定义星星个数.显示信息) sufuStar.star();使用默认值5个星星,默认信息 var msg = [........]; sufuStar.sta ...

  9. javascript星级评分(多个)

    JS打多个类型星级评分: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...

随机推荐

  1. http和tcp/ip,socket的区别

    http协议和tcp/ip协议乍看起来,感觉是同一类的东西,其实不然,下面简单的说说他们的区别. http协议是应用层的一种数据封装协议,类似的还有ftp,telnet等等,而tcp/ip是数据传输层 ...

  2. 机器学习实战之Apriori

    机器学习实战之Apriori 1. 关联分析 1.1 定义        关联分析是一种在大规模数据上寻找物品间隐含关系的一种任务.这种关系有2种形式:频繁项集和关联规则. (1) 频繁项集(freq ...

  3. 转:linux驱动开发的经典书籍

    源地址:http://www.cnblogs.com/xmphoenix/archive/2012/03/27/2420044.html Linux驱动学习的最大困惑在于书籍的缺乏,市面上最常见的书为 ...

  4. 【One by one系列】一步步部署.net core应用

    我们的目标: CentOS系统 nginx服务器 asp.net core应用 mysql服务器 腾讯云服务器 工具准备 [Xshell]--使用windwos下的工具Xshell,原理就是使用SHH ...

  5. fft模板 HDU 1402

    // fft模板 HDU 1402 #include <iostream> #include <cstdio> #include <cstdlib> #includ ...

  6. BZOJ2120&&2453 数颜色&&维护队列

    2453: 维护队列 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 1442 Solved: 678 [Submit][Status][Discuss ...

  7. mysql 登录的时候设置编码 utf8

    很多时候 导入sql 的时候需要命令行导入 但是有的时候容易出现乱码 因为字符集的问题 所以 尽量在登录的时候就设置编码 就不容易出错了 例如: mysql -uroot -p –default-ch ...

  8. TZ_16_Vue父子组件之间的通信

    1.父向子传递props,该如何传递 <!DOCTYPE html> <html lang="en"> <head> <meta char ...

  9. 使用innerHTML属性向head中插入字符时报“无法设置 innerHTML 属性。 该操作的目标元件无效”的错误

    向head中动态插入script文件,代码如下: var sc = document.createElement("script"); sc.src = "//www.c ...

  10. 玩转webpack之webpack的基本知识

    相信看了gulp教程的小伙伴肯定都可以很容易的掌握gulp了.它已经没有什么可以值得去思考的东西了,如果你已经看懂它就是单纯的在布置任务,然后利用插件的功能去执行任务.最后发布任务,pipe的理念来和 ...