评分视图的封装 (星星 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部分太多了就不贴了 “简单”视图函数 正如名字所言, ...
随机推荐
- PNG与iOS优化选项
从App Store下载到的每一枚App最初都是一只IPA文件(其实是zip格式,内含特定规则的文件夹组织方式).但当作zip解开之后会发现里面很多的PNG文件看不了,这是因为在这些PNG图像都已被i ...
- 62. Divide Two Integers
Divide Two Integers Divide two integers without using multiplication, division and mod operator. 思路: ...
- PHP如何获取文件行数
本文实例讲述了PHP获取文件行数的方法.分享给大家供大家参考.具体分析如下:提供两种实现方法,虽然第二种简单易懂,但是第一种效率最好第一种: <?php $file_path = 'xxx.tx ...
- javascript URI的编码
用encodeURIComponent,但是不清楚她和encodeURI的区别, w3school 对其的解释: encodeURIComponent() 函数可把字符串作为 URI 组件进行编码.( ...
- app的meta标签
1.规定网页编码 <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> ...
- 自定义属性,资源文件attrs.xml
1.attrs.xml中写:在values文件夹下. <?xml version="1.0" encoding="utf-8"?> <reso ...
- MySQL_关于用嵌套表计算的可以不用 20161205
计算求和类的指标,其实用不到嵌套表,比如计算各城市产品分类的订单额. 如果要计算不重复的指标 比如一个用户一天下了多个订单 用这样的表计算一天有多少用户下单 这个用户肯定是去重的 下多个订单也应该视为 ...
- 真机在wifi下调试android程序
大家好,最近在学习android程序由于手机接口问题,调试程序的时候老是接触不良而不能正常调试,因此感到相当苦恼,于是在网上查找无线调试android的方法.经过研究和尝试现已成功无线调试程序,方法分 ...
- css 透明(transparent)
opacity : .75; //standard css3 style for transparency -moz-opacity : .75; // transparenc ...
- java break语句的三种用法
1.用于switch语句当中,用于终止语句 2.用于跳出循环,此为不带标签的break语句,相当与goto的作用 e.g while(i<j&&h<k){ if(h< ...