星级评价 实现

设置评价星星

字体的大小适合布局的大小

[Lable名  sizeToFit];

.h

typedef enum kRatingViewStyle

{

kSmallStyle = 0,

kNormalStyle = 1

}kRatingViewStyle;

@interface RatingView : UIView

{

@private

UIView *_baseView;//透明的承载yellowStar的图层

NSMutableArray *_yellowStarArray;

NSMutableArray *_grayStarArray;

UILabel *_ratingLable;

CGFloat  _ratingScore;

}

@property(nonatomic,assign)kRatingViewStyle style;

@property(nonatomic,assign)CGFloat ratingScore;

.m

#define  kNormalWidth 35

#define  kNormalHeight 33

#define  kSmallWidth  15

#define  kSmallHeight  14

#define  kBaseViewWidth 10

#define  kNormalFontSize 25

#define  kSmallFontSize  12

初始化的时候调用:

- (id)initWithFrame:(CGRect)frame

{

self = [super initWithFrame:frame];

if (self) {

[self initGrayStar];

[self initYellowStar];

[self ratingLable];

}

return self;

}

几星的布局是根据:

1.设置为灰色星星的层

-(void)initGrayStar

{

_grayStarArray = [[NSMutableArray alloc] initWithCapacity:5];

for (int index = 0; index < 5; index++) {

UIImageView * crayStar = [[UIImageView alloc] initWithFrame:CGRectZero];

crayStar.image = [UIImage imageNamed:@"gray"];

[self addSubview: crayStar];

[crayStar release];

[_grayStarArray addObject:crayStar];

}

}//灰色星星的初始化

2.设置黄色星星的层,并设置一个透明层,用来放置黄色的星星,然后用clipsToBounds UIView的属性 这会把多余的截掉

-(void)initYellowStar

{

_baseView = [[UIView alloc] initWithFrame:CGRectZero];

_baseView.backgroundColor = [UIColor clearColor];

_baseView.clipsToBounds = YES;

[self addSubview:_baseView];

_yellowStarArray = [[NSMutableArray alloc] initWithCapacity:5];

for (int index = 0; index < 5; index++) {

UIImageView *yellowStar = [[UIImageView alloc] initWithFrame:CGRectZero];

yellowStar.image = [UIImage imageNamed:@"yellow"];

[_baseView addSubview: yellowStar];

[yellowStar release];

[_yellowStarArray addObject:yellowStar];

}

}//黄色星星的初始化和透明层的初始化(_baseView 与 yellowStar)

3.设置RatingLable 的比率框

-(void)ratingLable

{

_ratingLable = [[UILabel alloc] initWithFrame:CGRectZero];

_ratingLable.backgroundColor = [UIColor clearColor];

_ratingLable.textColor  = [UIColor purpleColor];

[self addSubview:_ratingLable];

}//-_atingLable评分框的初始化

4.在设置全局的RatingScore,用来接收和设置Rating 的样式

-(void)setRatingScore:(CGFloat)ratingScore

{

_ratingScore = ratingScore;

_ratingLable.text = [NSString stringWithFormat:@"%0.1f",_ratingScore];

}//设置评分的大小,赋值给_ratingLable

5.layoutSubviews 来布局

-(void)layoutSubviews

{

[super layoutSubviews];

int width = 0;

for (int index = 0; index < 5; index++) {

UIView *yellowStar = _yellowStarArray[index];

UIView *grayStar   = _grayStarArray[index];

if (self.style == kSmallStyle) {

yellowStar.frame = CGRectMake(0+width , 0 , kSmallWidth, kSmallHeight);

grayStar.frame   = CGRectMake(0+width, 0, kSmallWidth, kSmallHeight);

width +=kSmallWidth;

}else{

yellowStar.frame = CGRectMake(0+width , 0 , kNormalWidth, kNormalHeight);

grayStar.frame   = CGRectMake(0+width, 0, kNormalWidth, kNormalHeight);

width +=kNormalWidth;

}

}//将两种星星排成一行

float baseViewWidth = 0;

baseViewWidth = self.ratingScore / kBaseViewWidth *width;

float height = 0;

if (self.style == kSmallStyle) {

_baseView.frame = CGRectMake(0, 0, baseViewWidth, kSmallHeight);

_ratingLable.font = [UIFont boldSystemFontOfSize:kSmallFontSize];

height = kSmallHeight;

}else

{

_baseView.frame = CGRectMake(0, 0, baseViewWidth, kNormalHeight);

_ratingLable.font = [UIFont boldSystemFontOfSize:kNormalFontSize];

height = kNormalHeight;

}//设置——baseView的两种不同样式的大小,——ratingLable的字体大小

//设置ratingLable 的大小和位置

_ratingLable.frame = CGRectMake(width, 0, 0, 0);

[_ratingLable sizeToFit];

//整体的大小和位置

self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, width+_ratingLable.frame.size.width, height);

}//星星的排版

时间: 2024-10-10 09:40:42

星级评价 实现的相关文章

iOS:自己写的一个星级评价的小Demo

重新整理了下自己星级评价的Demo,可以展示星级评价,可以动态修改星级. github的地址:https://github.com/hunterCold/HYBStarEvaluationView a simple tool of star evaluation 一个简单的星级评价的工具 欢迎各位提出批评意见,也同时欢迎各位提供更多想法

Unity调用IOS的StoreKit实现在游戏内部的对游戏进行星级评价和评论

废话不多说直接上代码. 一 Xcode端的OC代码 在Xcode里面新建一个空的工程(不会搞的百度一下),然后创建一个.h和.m文件,记住要把.m的后缀改成.mm(.mm文件和.m文件的区别就是:.mm文件除了可以包含Objective-C和C代码以外,还可以包含C++代码),这个类要继承自NSObject .h代码如下: // // UnityStoreKit.h // UnityStoreKit // // Created by mac on 2017/12/14. // Copyright

仿淘宝实现多行星级评价

最近再做一个评价功能,当时首先想到的是淘宝的评价功能,感觉那个不错,由于是初学者所以还不是很会,于是在网上百度了一下,我发现网上的都是只有一行星级评价功能,所以我在他 <script type="text/javascript" > var Class = { create: function() { return function() { this.initialize.apply(this, arguments); } } } var Extend = function

星级评价案例

1 <style> 2 span { 3 font: bold 100px '宋体'; 4 float: left; 5 color: gold; 6 cursor: pointer; 7 } 8 </style> 9 <body> 10 <div> 11 <span>☆</span> 12 <span>☆</span> 13 <span>☆</span> 14 <span>

jquery实现仿商品星级评价

一,HTML部分 <div id="rating-star"> <a href="#">0</a> <a href="#">1</a> <a href="#">2</a> <input type="hidden" id="goodLevel" /> </div> 二,CSS部分 接

Android 自定义简单控件--星级评价

效果图 实现 package com.easypass.carstong.view; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; im

星级评价(简单版)

网上看见很多星星评分的控件类,所使用的方法各有不同,但是代码量实在太多(我这人实在不喜欢看长篇大论).明明就是一个简简单单的功能,非得写那么长的代码,所以我就自己封装了一个类,专门用于做星星评分的.其中如果有写的不好的地方或者您有更好的办法,欢迎指出. github链接:https://github.com/chen5787965/Newstar.git #import "starRating.h" @interface StarRating () { UIButton *preBTN

评价部分中星级评价简单的实现

说明:主要是想总结一下jquery中的知识,这个例子中用到的主要是jquery中prevall()方法和nextAll()方法进行元素集合的遍历 jquery部分 $(function(){    $(".star01 li").addClass("xing_nomarl");    $(".star01 li").click(function(){        $(".star01 li").addClass("

星级评价

绝对原创: css代码: .star { background: url(images/star0.png) no-repeat;       /***纯灰色5颗星图片****/ background-size: 100% 100%; width: 72px; display: inline-block; vertical-align: bottom; height: 12px;}.star i { display: inline-block; height: 12px; background: