美文网首页
iOS星星评级

iOS星星评级

作者: if_you_like | 来源:发表于2017-02-10 14:13 被阅读51次

最近项目需要写类似货物5星评价,所以就写一下。具体的样子如下。

Simulator Screen Shot 2017年2月10日 13.59.54.png

下面主要介绍一下主要代码

在.H文件中的公有属性和方法
// 点击星星后的Block ,返回当前视图,和当前点击的第几个星星(从1开始数)
@property (nonatomic, copy) StarEvaluateBlock starEvaluateBlock;

// 默认星星
@property (nonatomic, strong) UIImage *defaultImage;
// 亮的星星
@property (nonatomic, strong) UIImage *lightImage;

// 默认有五个星星
- (instancetype)initWithFrame:(CGRect)frame
                    starIndex:(NSInteger)index
                    starWidth:(CGFloat)starWidth
                        space:(CGFloat)space
                 defaultImage:(UIImage *)defaultImage
                   lightImage:(UIImage *)lightImage
                     isCanTap:(BOOL)isCanTap;

下面是.m

// 默认有五个星星
- (instancetype)initWithFrame:(CGRect)frame
                    starIndex:(NSInteger)index
                    starWidth:(CGFloat)starWidth
                        space:(CGFloat)space
                 defaultImage:(UIImage *)defaultImage
                   lightImage:(UIImage *)lightImage
                     isCanTap:(BOOL)isCanTap{
    
    self = [super initWithFrame:frame];
    if (self) {
        
        if (defaultImage) {
            self.defaultImage = defaultImage;
        } else {
            self.defaultImage = [UIImage imageNamed:@"五星评价_灰"];
        }
        
        if (lightImage) {
            self.lightImage = lightImage;
        } else {
            self.lightImage = [UIImage imageNamed:@"五星评价_黄"];
        }
        
        for (NSInteger j = 0; j < 5; j++) {
            UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(j* (starWidth + space), 0, starWidth, self.height)];
            
            btn.enabled = isCanTap;
            btn.tag = j + 1;
            [btn addTarget:self action:@selector(starTapBtn:) forControlEvents:UIControlEventTouchUpInside];
            // 上左下右 星星居中
            [btn setImageEdgeInsets:UIEdgeInsetsMake((self.height - starWidth)/2, 0, (self.height - starWidth)/2, 0)];
            if (j < index) {
                [btn setImage:self.lightImage forState:UIControlStateNormal];
            } else {
                [btn setImage:self.defaultImage forState:UIControlStateNormal];
            }
            [self addSubview:btn];
            
            // self.width
            self.width = (starWidth + space) * 5;
        }
    }
    return self;
}
//这边的方法主要是按钮地点击的时候遍历一下按钮点击前面和点击过的按都显示为选中
- (void)starTapBtn:(UIButton *)btn{
    
    for (NSInteger i = 1; i <= 5; i++) {
        UIButton *starBtn = (UIButton *)[self viewWithTag:i];
        if (i <= btn.tag) {
            [starBtn setImage:self.lightImage forState:UIControlStateNormal];
        } else {
            [starBtn setImage:self.defaultImage forState:UIControlStateNormal];
        }
    }
    
    if (self.starEvaluateBlock) {
        self.starEvaluateBlock(self,btn.tag);
    }
}

具体代码衔接为我只是一个demo

相关文章

  • iOS星星评级

    最近项目需要写类似货物5星评价,所以就写一下。具体的样子如下。 下面主要介绍一下主要代码 下面是.m 具体代码衔接...

  • 简单星星评级

    前端入坑纪 35 更新时间隔得有些久了,最近手头忙着建站。好,今天来个简单的星星评价效果! 当然拉,其实星星图片你...

  • iOS小Demo1:星星评级效果

    前言 早上的时光总是很漫长,距上班还有两个小时,睡不着觉来搞点事情做,写了一个星星评级的小demo,实现的比较简单...

  • iOS星级评级

    附上效果图 实现的功能:1.可以自定义星星的数量(默认为5颗星)2.可以初始化设置星级(初始化设置星级就不能更改星...

  • Human Interface Guidelines——Rati

    尝试阅读《Human Interface Guidelines》原文翻译学习iOS设计指南。 评分和评级可以帮助用...

  • iOS应用内评分

    iOS应用内评分 SKStoreReviewController 控制向用户请求应用商店评级和评论的过程的对象An...

  • XRP-瑞波币评级:B,虽是跨境汇款领头羊,但3个问题能让它崩盘

    前言:【266评级】建立原因,是不满评级行业潜规则:热衷给小项目评级或站台,售卖评级报告或讹诈对方。【266评级】...

  • 基于Python的信用评分卡模型分析

    信用风险计量体系包括主体评级模型和债项评级两部分。主体评级和债项评级均有一系列评级模型组成,其中主体评级模型可用“...

  • 基于Python的信用评分卡模型分析(一)

    信用风险计量体系包括主体评级模型和债项评级两部分。主体评级和债项评级均有一系列评级模型组成,其中主体评级模型可用“...

  • kaggle风控(一)——give me some credit

    信用风险计量体系包括主体评级模型和债项评级两部分。主体评级和债项评级均有一系列评级模型组成,其中主体评级模型可用“...

网友评论

      本文标题:iOS星星评级

      本文链接:https://www.haomeiwen.com/subject/cdsgittx.html