评分视图的封装 (星星 RatingView)
#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)的更多相关文章
- Django drf:视图层封装、ViewSetMixin、路由配置、解析器、响应器
一.视图层封装 二.ViewSetMixin 三.路由配置 四.解析器 五.响应器 一.视图层封装 1.基本视图 写一个出版社的增删改查resfull接口 路由: url(r'^publish/$', ...
- oracle视图就是封装了一条写好的sql语句 可通过视图修改表结构 ; oracle需要手动创建序列
create sequence student_sid; --创建序列 oracle只能通过手动方式创建序列
- Android星星评分控件RatingBar的使用
在Android的开发中,有一个叫做评分控件RatingBar,我们可以使用该控件做等级划分.评分等作用,星星形状显示,也可以半星级别,我们来看一下评分控件如何使用. 布局文件中定义控件以及属性,这里 ...
- 星星的模块封装类 IDSStarsScoreView
1 IDSStarsScoreView 的实现效果 2 类的封装方法: <声明文件> // // IDSStarsScoreView.h // Near // // ...
- restfull规范、DRF视图和路由
一.restfull规范的简单介绍 1.介绍 REST:表述性状态转移,是一种web交互方案 资源:在web中只要有被引用的必要都是资源 URI: URI 统一资源标识符 URL 统一资源定位符 统一 ...
- DRF的视图
DRF的视图 APIView 我们django中写CBV的时候继承的是View,rest_framework继承的是APIView,那么他们两个有什么不同呢~~~ urlpatterns = [ ...
- DRF 视图组件,路由组件
视图组件 -- 第一次封装 -- GenericAPIView(APIView): queryset = None serializer_class = None def ge ...
- cocos-lua基础学习(四)quick层封装后的目录结构
命名空间 cc cocos2d核心类 ccb cocosbuilder扩展 ccs cocostudio扩展 cocos2d目录结构 bitExtend.lua cocos2d.lua cocos2d ...
- 6:django 通用视图
上一节我们介绍了django视图函数里面几个常用的函数,这节我们来看一下django为我们提供的一些通用视图吧 在最后面有我自己的示例代码,html部分太多了就不贴了 “简单”视图函数 正如名字所言, ...
随机推荐
- Mysql备份迁移——MySqlBackup(.net)——(无法解决视图嵌视图报错)
这里是利用MySqlBackup,可以再nuget中下载. 无法解决视图嵌视图报错的问题,只导表跟数据比较合适,如果有视图嵌视图,请参照Mysql备份迁移——Mysqldump(.NET调用Mysql ...
- java变量的作用域
1.可分为成员变量和局部变量 两者的作用域不同:局部变量的作用域仅限于定义它的方法,方法外部无法访问,成员变量的作用域在整个类内部都可以访问如果访问权限允许的话,类外部也可以使用 初始值不同:对于成员 ...
- Symfony2 资料篇
http://www.chrisyue.com/symfony2-in-action-day-1.html 由于Symfony2现在还没有很完善的中文文档,所以不想看文档的同学可以直接进行点击上面的链 ...
- 【caffe-windows】 caffe-master 之 matlab接口配置
平台环境: win10 64位 caffe-master vs2013 Matlab2016a 第一步: 打开\caffe-master\windows下的CommonSettings.props文 ...
- c#版在pc端发起微信扫码支付
等了好久,微信官方终于发布了.net的demo. 主要代码: /** * 生成直接支付url,支付url有效期为2小时,模式二 * @param productId 商品ID * @return 模式 ...
- nginx for linux安装及安装错误解决
nginx:下载地址:http://www.nginx.org/ 1.GCC编译器 安装指令 :yum install -y gcc 如果你所使用的是ubuntu,则安装指令为:apt-get i ...
- Web SQL Database实例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- iMac 重装系统
iMac重装系统相当简单.开机的时候按下option键选择恢复系统或者在开机前按下 command+R然后按开机键松开同样会进入系统选择界面: 当中有 4 个选项:Restore From Time ...
- 学习java第8天
今天主要是学习了多态,多态指同一个对象在不同时刻体现出来的不同状态.多态的前提:有继承或者实现关系.有方法重写.有父类或者父接口引用指向子类对象. class Fu {} class Zi ext ...
- js中Array对象方法详解
操作方法:concat() slice() splice() concat()方法可以基于当前数组中的所有项创建一个新数组.具体来说,这个方法会创建当前数组一个副本,将接收到参数添加到副本的末尾,最后 ...