#import "RatingView.h"

#define kRatingScale 10

@implementation RatingView

{

UIView *_grayStarView,*_yellowStarView;

}

// 代码创建

- (id)initWithFrame:(CGRect)frame {

if (self = [super initWithFrame:frame]) {

self.backgroundColor = [UIColor clearColor];

[self creatKits];//加载子控件

}

return self;

}

//通过xib文件加载

- (void)awakeFromNib {

[super awakeFromNib];

self.backgroundColor = [UIColor clearColor];

[self creatKits];

}

// 通过storyBoard创建

- (id)initWithCoder:(NSCoder *)aDecoder {

if (self = [super initWithCoder:aDecoder]) {

self.backgroundColor = [UIColor clearColor];

[self creatKits];

}

return self;

}

// 加载子视图

- (void)creatKits {

// 获取加载的星星图片,需要的时图片的饿size属性

UIImage *starImage = [UIImage imageNamed:@"gray"];

CGFloat width = starImage.size.width;

CGFloat height = starImage.size.height;

// 初始化星星视图  宽为星星图片的宽的5倍

_grayStarView = [[UIView alloc] initWithFrame:CGRectMake(0, 0,  width*5, height)];

_grayStarView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"gray"]];

[self addSubview:_grayStarView];

_yellowStarView = [[UIView alloc] initWithFrame:CGRectMake(0, 0,  width*5, height)];

_yellowStarView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"yellow"]];

[self addSubview:_yellowStarView];

// 计算星星视图的形变比例  使得星星视图的大小与评分视图一致

CGFloat scale1 = self.frame.size.width/(width *5);

CGFloat scale2 = self.frame.size.height/height;

_grayStarView.transform = CGAffineTransformMakeScale(scale1, scale2);

_yellowStarView.transform = CGAffineTransformMakeScale(scale1, scale2);

// 重置星星视图的坐标

CGRect grayStarFrame = _grayStarView.frame;

grayStarFrame.origin = CGPointMake(0, 0);

_grayStarView.frame = grayStarFrame;

_yellowStarView.frame = grayStarFrame;

}

- (void)setRating:(CGFloat)rating {

_rating = rating;

CGRect rect = self.bounds;

rect.size.width  = rect.size.width*(rating/kRatingScale);

_yellowStarView.frame = rect;

}

评分视图的封装 (星星 RatingView)的更多相关文章

  1. Django drf:视图层封装、ViewSetMixin、路由配置、解析器、响应器

    一.视图层封装 二.ViewSetMixin 三.路由配置 四.解析器 五.响应器 一.视图层封装 1.基本视图 写一个出版社的增删改查resfull接口 路由: url(r'^publish/$', ...

  2. oracle视图就是封装了一条写好的sql语句 可通过视图修改表结构 ; oracle需要手动创建序列

    create sequence student_sid; --创建序列 oracle只能通过手动方式创建序列

  3. Android星星评分控件RatingBar的使用

    在Android的开发中,有一个叫做评分控件RatingBar,我们可以使用该控件做等级划分.评分等作用,星星形状显示,也可以半星级别,我们来看一下评分控件如何使用. 布局文件中定义控件以及属性,这里 ...

  4. 星星的模块封装类 IDSStarsScoreView

    1 IDSStarsScoreView 的实现效果     2 类的封装方法:   <声明文件>   // //  IDSStarsScoreView.h //  Near // //  ...

  5. restfull规范、DRF视图和路由

    一.restfull规范的简单介绍 1.介绍 REST:表述性状态转移,是一种web交互方案 资源:在web中只要有被引用的必要都是资源 URI: URI 统一资源标识符 URL 统一资源定位符 统一 ...

  6. DRF的视图

    DRF的视图 APIView 我们django中写CBV的时候继承的是View,rest_framework继承的是APIView,那么他们两个有什么不同呢~~~ urlpatterns = [    ...

  7. DRF 视图组件,路由组件

    视图组件  -- 第一次封装   -- GenericAPIView(APIView):    queryset = None    serializer_class = None    def ge ...

  8. cocos-lua基础学习(四)quick层封装后的目录结构

    命名空间 cc cocos2d核心类 ccb cocosbuilder扩展 ccs cocostudio扩展 cocos2d目录结构 bitExtend.lua cocos2d.lua cocos2d ...

  9. 6:django 通用视图

    上一节我们介绍了django视图函数里面几个常用的函数,这节我们来看一下django为我们提供的一些通用视图吧 在最后面有我自己的示例代码,html部分太多了就不贴了 “简单”视图函数 正如名字所言, ...

随机推荐

  1. Mysql备份迁移——MySqlBackup(.net)——(无法解决视图嵌视图报错)

    这里是利用MySqlBackup,可以再nuget中下载. 无法解决视图嵌视图报错的问题,只导表跟数据比较合适,如果有视图嵌视图,请参照Mysql备份迁移——Mysqldump(.NET调用Mysql ...

  2. java变量的作用域

    1.可分为成员变量和局部变量 两者的作用域不同:局部变量的作用域仅限于定义它的方法,方法外部无法访问,成员变量的作用域在整个类内部都可以访问如果访问权限允许的话,类外部也可以使用 初始值不同:对于成员 ...

  3. Symfony2 资料篇

    http://www.chrisyue.com/symfony2-in-action-day-1.html 由于Symfony2现在还没有很完善的中文文档,所以不想看文档的同学可以直接进行点击上面的链 ...

  4. 【caffe-windows】 caffe-master 之 matlab接口配置

    平台环境: win10 64位 caffe-master  vs2013 Matlab2016a 第一步: 打开\caffe-master\windows下的CommonSettings.props文 ...

  5. c#版在pc端发起微信扫码支付

    等了好久,微信官方终于发布了.net的demo. 主要代码: /** * 生成直接支付url,支付url有效期为2小时,模式二 * @param productId 商品ID * @return 模式 ...

  6. nginx for linux安装及安装错误解决

    nginx:下载地址:http://www.nginx.org/ 1.GCC编译器 安装指令 :yum  install -y  gcc 如果你所使用的是ubuntu,则安装指令为:apt-get i ...

  7. Web SQL Database实例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. iMac 重装系统

    iMac重装系统相当简单.开机的时候按下option键选择恢复系统或者在开机前按下 command+R然后按开机键松开同样会进入系统选择界面: 当中有 4 个选项:Restore From Time ...

  9. 学习java第8天

    今天主要是学习了多态,多态指同一个对象在不同时刻体现出来的不同状态.多态的前提:有继承或者实现关系.有方法重写.有父类或者父接口引用指向子类对象.   class Fu {} class Zi ext ...

  10. js中Array对象方法详解

    操作方法:concat() slice() splice() concat()方法可以基于当前数组中的所有项创建一个新数组.具体来说,这个方法会创建当前数组一个副本,将接收到参数添加到副本的末尾,最后 ...