评分视图的封装 (星星 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部分太多了就不贴了 “简单”视图函数 正如名字所言, ...
随机推荐
- System.TypeInitializationException: The type initializer for 'Mono.Unix.Native.Stdlib' threw an exception.
08-31 17:02:03: ### DEBUG ##########################System.TypeInitializationException: The type ini ...
- js动态增加html页面元素
问题: <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2 ...
- AIDL学习
(转自)可以参见:http://www.2cto.com/kf/201406/312244.html 1.为什么要有AIDL? 无论学什么东西,最先得弄明白为什么要有这个东西,不要说存在即是合理,存在 ...
- Ibatis 测试出SQL
String sql = Brg.Global.Map.BaseBatis.GetRuntimeSql("select_T_JewelleryProductType", _Mode ...
- HTML图像映射
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 碎片事物的提交 commitAllowingStateLoss()
转:http://blog.csdn.net/kaiqiangzhang001/article/details/42241441 下边两个问题,是在开发中碰到的一些关于Fragment的偶发性的问题, ...
- WEB-INF下jsp跳转
今天才知道:浏览器是不允许直接访问WEB-INF文件夹的 瞬间感觉自己好shi的有没有,纠结了2天 看来还得通过springMVC来跳,,,
- 在django中使用自定义标签实现分页功能
效果演示: github地址:https://github.com/mncu/django_projects/tree/master/django_projects/pagination_test 本 ...
- BootLoader 详解(2)
BootLoader的stage1 1.基本的硬件初始化 这是BootLoader一开始就执行的操作,其目的是为stage2的执行以及随后的kernel的执行准备好一些基本的硬件环境.它通 常包括以下 ...
- Docker上运行dotnet core
下载microsoft/dotnet镜像 运行命令: docker pull microsoft/dotnet 如果没有使用阿里镜像加速的,参照这篇先配置好再跑上面命令: http://www.cnb ...