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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章