iOS第三方星级视图控件——HCSStarRatingView

iOS第三方星级视图控件——HCSStarRatingView

HCStarRatingView是一款十分小巧的星级视图控件,其通过原生画图的方式来渲染星级视图页面,同时,其也支持开发者对星级图片的自定义操作。

HCStarRatingView的git地址如下:https://github.com/hsousa/HCSStarRatingView

HCStarRatingView的使用十分简单,示例如下:

1.使用代码实现

@interface ViewController ()
{
    HCSStarRatingView * starView ;
    UILabel * label;
}
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    starView = [[HCSStarRatingView alloc]initWithFrame:CGRectMake(20, 100, 280, 50)];

    starView.maximumValue = 10;//默认5
    starView.minimumValue = 1;//默认0,不能选择比minimumValue小的星星值,当你没有选择星星时value也是minimumValue
    // starView.value = 3;//当前值,默认0

    //是否允许半星,默认NO
    starView.allowsHalfStars = YES;

    //是否是否允许精确选择 可以根据选择位置进行精确,默认NO
    starView.accurateHalfStars = YES;

    //星星的颜色
    starView.tintColor = [UIColor colorWithRed:232/255.0 green:156/255.0 blue:39/255.0 alpha:1.0];//默认蓝色

    //设置空星时的图片
    starView.emptyStarImage = [[UIImage imageNamed:@"heart-empty"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];//UIImageRenderingModeAlwaysTemplate 始终根据Tint Color绘制图片,忽略图片的颜色信息。
    //设置全星时的图片
    starView.filledStarImage = [[UIImage imageNamed:@"heart-full"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
    [starView addTarget:self action:@selector(didChange:) forControlEvents:UIControlEventValueChanged];
    [self.view addSubview:starView];

    label = [[UILabel alloc]initWithFrame:CGRectMake(100, 180, 100, 40)];
    label.text = [NSString stringWithFormat:@"%f",starView.value];
    [self.view addSubview:label];
}


- (void)didChange:(HCSStarRatingView*)sender{
// NSLog(@"starView.value:%f",starView.value);
    label.text = [NSString stringWithFormat:@"%f",sender.value];
}

效果如下图:
这里写图片描述

2.使用Main.storyboard实现

1.拖入一个空白View,将Custom Class中的Class选择为HCSStarRatingView
这里写图片描述
2.设置相关属性,不设置则按照默认值
这里写图片描述
这里写图片描述
这里写图片描述
3.相关代码

@interface ViewController ()
@property (weak, nonatomic) IBOutlet HCSStarRatingView *Star1;
@property (weak, nonatomic) IBOutlet HCSStarRatingView *Star2;
@property (weak, nonatomic) IBOutlet HCSStarRatingView *Star3;
@property (weak, nonatomic) IBOutlet UILabel *Value1;
@property (weak, nonatomic) IBOutlet UILabel *Value2;
@property (weak, nonatomic) IBOutlet UILabel *Value3;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    _Value1.text = [NSString stringWithFormat:@"value:%.2lf",_Star1.value];
    _Value2.text = [NSString stringWithFormat:@"value:%.2lf",_Star2.value];
    _Value3.text = [NSString stringWithFormat:@"value:%.2lf",_Star3.value];
}

- (IBAction)didChange1:(HCSStarRatingView*)sender {
    _Value1.text = [NSString stringWithFormat:@"value:%.2lf",sender.value];
}

- (IBAction)didChange2:(HCSStarRatingView*)sender {
    _Value2.text = [NSString stringWithFormat:@"value:%.2lf",sender.value];

}

- (IBAction)didChange3:(HCSStarRatingView*)sender {
    _Value3.text = [NSString stringWithFormat:@"value:%.2lf",sender.value];

}

相关属性如下:(参考自https://my.oschina.net/u/2340880/blog/706851)

//设置最大值
@property (nonatomic) IBInspectable NSUInteger maximumValue;
//设置最小值
@property (nonatomic) IBInspectable CGFloat minimumValue;
//星级视图当前值
@property (nonatomic) IBInspectable CGFloat value;
//星星间间距
@property (nonatomic) IBInspectable CGFloat spacing;
//是否允许选择半星
@property (nonatomic) IBInspectable BOOL allowsHalfStars;
//是否是否允许精确选择 可以根据选择位置进行精确
@property (nonatomic) IBInspectable BOOL accurateHalfStars;
//是否连续调用回调方法 如果设置为YES 则在手指拖动时 会持续调用回调方法 如果设置为NO,则只有拖动结束后才调用回调
@property (nonatomic) IBInspectable BOOL continuous;
//是否允许成为第一响应
@property (nonatomic) BOOL shouldBecomeFirstResponder;
//添加手势时使用
@property (nonatomic, copy) HCSStarRatingViewShouldBeginGestureRecognizerBlock shouldBeginGestureRecognizerBlock;
//自定义星星视图UI
//设置空星的图片
@property (nonatomic, strong) IBInspectable UIImage *emptyStarImage;
//设置半星的图片
@property (nonatomic, strong) IBInspectable UIImage *halfStarImage;
//设置全星时的图片
@property (nonatomic, strong) IBInspectable UIImage *filledStarImage;

转载于:https://my.oschina.net/u/3385567/blog/907484

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值