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

    xiaoxiao2022-06-24  21

    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://ju.6miu.com/read-1123693.html

    最新回复(0)