星级评价(简单版)

网上看见很多星星评分的控件类,所使用的方法各有不同,但是代码量实在太多(我这人实在不喜欢看长篇大论)。明明就是一个简简单单的功能,非得写那么长的代码,所以我就自己封装了一个类,专门用于做星星评分的。其中如果有写的不好的地方或者您有更好的办法,欢迎指出。

github链接:https://github.com/chen5787965/Newstar.git

#import "starRating.h"

@interface StarRating ()

{

UIButton *preBTN;

}

@property(nonatomic,weak)UILabel *textLabel;

@property(nonatomic,strong)NSMutableArray *btnArray;

@end

@implementation StarRating

-(instancetype)initWithFrame:(CGRect)frame

{

self = [super initWithFrame:frame];

if (self) {

// 创建一个可变数组

self.btnArray = [[NSMutableArray alloc]init];

//1.初始化按钮

[self setupButton];

//2.初始化文本框

[self setupLabel];

}

return self;

}

//初始化文本框

-(void)setupLabel

{

//1. 创建一个静态文本框

UILabel *label = [[UILabel alloc]init];

//2. 设置文本框的属性

label.textColor = [UIColor redColor];

label.frame = CGRectMake(0, 0, 100, 30);

label.center = CGPointMake(self.center.x + 30, self.center.y);

label.textAlignment = NSTextAlignmentCenter;

label.font = [UIFont systemFontOfSize:13];

[self addSubview:label];

self.textLabel = label;

}

//初始化按钮

-(void)setupButton

{

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

// 1.创建按钮

UIButton *btn = [[UIButton alloc]init];

//2.设置属性

//2.1 普通状态下的按钮背景

[btn setBackgroundImage:[UIImage imageNamed:@"star2"] forState:UIControlStateNormal];

// 2.2选中状态下的按钮背景

[btn setBackgroundImage:[UIImage imageNamed:@"star"] forState:UIControlStateSelected];

CGFloat margin = 10;

CGFloat btnY = self.center.y;

CGFloat btnW = 30;

CGFloat btnH = 30;

CGFloat btnX = i * btnW + margin;

btn.frame = CGRectMake(btnX, btnY, btnW, btnH);

//3.设置按钮点击事件

[btn addTarget:self action:@selector(btnOnClick:) forControlEvents:UIControlEventTouchDown];

//4.将按钮添加到视图中

[self addSubview:btn];

//5.设置tag

btn.tag = i;

//6.将按钮添加到数组中

[self.btnArray addObject:btn];

}

}

-(void)btnOnClick:(UIButton *)btn

{

//1. 被点击的按钮之前之后的按钮状态改变

for(UIButton *button in self.btnArray)

{

if (button.tag <= btn.tag) {

if ((preBTN.tag == btn.tag)&&(button.tag==btn.tag)) {

btn.selected = !btn.selected;

}else{

button.selected = YES;

}

}else{

button.selected = NO;

}

}

//2.上一次被点击的按钮

preBTN = btn;

//3.设置静态文本框的内容

if (btn.selected) {

[self.textLabel  setText:[NSString stringWithFormat:@"%ld分好评",btn.tag + 1]];

}else

{

[self.textLabel  setText:[NSString stringWithFormat:@"%ld分好评",btn.tag]];

}

}

@end

时间: 2024-12-23 02:23:54

星级评价(简单版)的相关文章

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

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

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

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

分享一个近期写的简单版的网页采集器

分享一个近期写的简单版的网页采集器 功能特点: 1.可通过配置,保存采集规则. 2.可通过采集规则,进行数据采集. 3.可分页,分关键字,进行采集. 4.可保存数据至数据库,文本中. ........... 功能还比较简单,喜欢深入的可以继续深入下去,暂时还没有登录的功能,因为登录功能涉及到的范围比较广,待日后慢慢研究后再开发. 我先上个图让大家一睹为快吧: 首先看看页面,我们要采集这个网站的文章 接下来,首先是查找分页,获得分页里面的文章链接,接着查找内容页需要采集的字段,生成规则,进行采集.

Java实现简单版SVM

最近的图像分类工作要用到latent svm,为了更加深入了解svm,自己动手实现一个简单版的. 之所以说是简单版,因为没有用到拉格朗日,对偶,核函数等等.而是用最简单的梯度下降法求解.其中的数学原理我参考了http://blog.csdn.net/lifeitengup/article/details/10951655,文中是用matlab实现的svm. 源代码和数据集下载:https://github.com/linger2012/simpleSvm 其中数据集来自于libsvm,我找了其中

MFC抓取网页代码简单版。

最近又在网上找了一些有关MFC抓取网页代码的文章看,发现有个比较简单的代码,和大家分享下. CInternetSession session(NULL, 0); CHttpFile* htmlFile = NULL; CString strLine, strHtml; CString url = _T("http://www.tqyb.com.cn/data/gzWeather/gz_weatherForecastInDays.js?"); TCHAR sRecv[1024]; UIN

luogu P3808 【模板】AC自动机(简单版)

二次联通门 : luogu P3808 [模板]AC自动机(简单版) /* luogu P3808 [模板]AC自动机(简单版) 手速越来越快了 10分钟一个AC自动机 一遍过编译 + 一边AC 感觉不错 我也就做做板子题了.. */ #include <iostream> #include <cstring> #include <cstdio> #include <queue> #define Max 1000009 void read (int &

简单版猜拳游戏

界面很简单 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84

汇编 输入输出字符串(最简单版)

data segment max_len db 10 real_len db ? buf_str db 10 dup(0) CRLF DB 0AH,0DH,"$"; data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax xor ax,ax mov dx,offset max_len;输入 mov ah,10 int 21h mov bx,offset buf_str;去掉输入的最后一个回车字

JavaMail简单版实验测试

前言: 最近由于实现web商城的自动发送邮件功能的需求,故涉猎的邮箱协议的内部原理.现将简单版的Java Mail实例做个代码展示,并附上其中可能出现的bug贴出,方便感兴趣的读者进行测试! 1.载入相关jar包 客户端传输邮件需要用的jar包:activation.jar和mail.jar (下载:https://github.com/SeaSky0606/share) 2.JavaMail代码实现 1 package com.seasky.mail; 2 3 import java.util

SqlHelper 简单版

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; namespace AddressBook { class SqlHelper { /// <summary> /// 连接数据库的字符串 /// </summary> private static string co