iOS App订单 星星评价的控件

本文介绍了如何在iOS应用中创建一个星星评价控件。通过实现StarView类,设置星星大小、间隔,并添加默认及选中图片。控件利用UIButton数组表示星星,通过点击和拖动手势改变选中状态,实时更新评分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//评价星星控件用法

    StarView *startView = [[StarView alloc]initWithFrame:CGRectMake(0, 0, 200, 200)];

    startView.startNum = 4;

    startView.defalutImage = [UIImage imageNamed:@" "];

    startView.selectedImage = [UIImage imageNamed:@" "];

    [self.view addSubview:startView];



星星控件:

#import "StarView.h"

//星星的大小

#define startBtnSize 30

//星星的间隙

#define startInterval 5

@implementation StarView

- (instancetype)initWithFrame:(CGRect)frame {

    if (self == [super initWithFrame:frame]) {

        [self setBackgroundColor:[UIColor whiteColor]];

    }

    

    return self;

}


- (void)drawRect:(CGRect)rect {

    

    self.tag = 11;

    CGFloat originX = (rect.size.width-_startNum*startBtnSize-(_startNum-1)*startInterval) * 0.5;

    CGFloat originY = (rect.size.height-startBtnSize)*0.5;

    for (int i = 0 ; i <</span> _startNum; i++) {

        UIButton *startButton = [[UIButton alloc]initWithFrame:CGRectMake(originX + (startInterval+startBtnSize) * i, originY, startBtnSize, startBtnSize)];

        startButton.tag = i ;

        [startButton setImage:_defalutImage forState:UIControlStateNormal];

        [startButton setImage:_selectedImage forState:UIControlStateSelected];

        [startButton addTarget:self action:@selector(startBtnClick:) forControlEvents:UIControlEventTouchUpInside];

        [self addSubview:startButton];

    }

    //点击手势

    UIPanGestureRecognizer *pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(pan:)];

    [self addGestureRecognizer:pan];

    

}

- (void)startBtnClick:(UIButton *)sender {

    for (int i = 0; i <</span> _startNum; i++) {

        if (i <= sender.tag) {

            if (sender.tag == 0) {

                UIButton *button = [self viewWithTag:i];

                button.selected = !button.selected;

                if (button.selected == YES) {

                    self.score = 1;

                } else {

                    self.score = 0;

                }

            } else {

                UIButton *button = [self viewWithTag:i];

                button.selected = YES;

                self.score = sender.tag;

            }

        } else {

            UIButton *button = [self viewWithTag:i];

            button.selected = NO;

        }

        

    }

}

- (void)pan:(UIPanGestureRecognizer *)gesture {

    CGPoint point = [gesture locationInView:self];

    if (point.x > 0 && point.x <</span> _startNum*startBtnSize+(_startNum - 1)*startInterval) {

        CGFloat k = point.x/(startBtnSize+startInterval);

        for (int i = 0; i <</span> _startNum; i++) {

            if (k >= i && k < i+1) {

                k = i;

            }

        }


        UIButton *button = [self viewWithTag:k];

        [self startBtnClick:button];

            

        

    }


}

 

@end

评价星星控件下载地址: https://pan.baidu.com/s/1jIJsnDc(不好的地方,勿喷)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值