也是最近項目中要用到這個功能唠雕,就是要顯示對應商品的評價星級吨述,類似于淘寶評價星星揣云。 我是把這個功能封裝成了一個類邓夕,也方便以后其他工程可以隨手拿來用阎毅。
** 1.建一個繼承自UIView的類扇调,我這里叫做YKStarView **
** 2.YKStarView.h頭文件內(nèi)容 **
//
// YKStarView.h
// test
//
// Created by 張張張小煩 on 16/5/14.
// Copyright ? 2016年 YK. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface YKStarView : UIView
@property (nonatomic, assign) NSInteger maxStar; // 最大值
@property (nonatomic, assign) NSInteger showStar; // 顯示值
@property (nonatomic, strong) UIColor *emptyColor; // 空顏色
@property (nonatomic, strong) UIColor *fullColor; // 滿顏色
@end
** 3.在YKStarView.m 文件實現(xiàn)方法 **
//
// YKStarView.m
// test
//
// Created by 張張張小煩 on 16/5/14.
// Copyright ? 2016年 YK. All rights reserved.
//
#import "YKStarView.h"
#define YKStarFont [UIFont systemFontOfSize:14] // 星星size宏定義
@implementation YKStarView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
self.backgroundColor = [UIColor clearColor];
//未點亮時的顏色是 灰色的
self.emptyColor = [UIColor grayColor];
//點亮時的顏色是 亮黃色的
self.fullColor = [UIColor orangeColor];
//默認的長度設置為100
self.maxStar = 100;
}
return self;
}
** 4.重寫drawRect方法 **
- (void)drawRect:(CGRect)rect
{
CGContextRef context = UIGraphicsGetCurrentContext();
NSString* stars = @"★★★★★";
rect = self.bounds;
CGSize starSize = [stars sizeWithFont:YKStarFont];
rect.size=starSize;
[_emptyColor set];
[stars drawInRect:rect withFont:YKStarFont];
CGRect clip = rect;
clip.size.width = clip.size.width * _showStar / _maxStar;
CGContextClipToRect(context,clip);
[_fullColor set];
[stars drawInRect:rect withFont:YKStarFont];
}
** 5. 就是使用了,在相應位置導入頭文件 #import "YKStarView.h"
**
//
// ViewController.m
// test
//
// Created by 張張張小煩 on 16/5/12.
// Copyright ? 2016年 YK. All rights reserved.
//
#import "ViewController.h"
#import "YKStarView.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
//評論是2.5分的
YKStarView *svOne = [[YKStarView alloc]initWithFrame:CGRectMake(90, 90 + 40, 200, 40)];
[self.view addSubview:svOne];
svOne.showStar = 2.5 * 20;
//評論是4.0分的
YKStarView *svTwo = [[YKStarView alloc]initWithFrame:CGRectMake(90, 90 + 40 + 40, 200, 40)];
[self.view addSubview:svTwo];
svTwo.showStar = 4.0 * 20;
//評論是5.0分的
YKStarView *svThree = [[YKStarView alloc]initWithFrame:CGRectMake(90, 90 + 40 + 40 + 40, 200, 40)];
[self.view addSubview:svThree];
svThree.showStar = 5.0 * 20;
}
運行效果如下:
又是一個簡單的小技巧,當然剥悟,里面還有很多不完善曼库,比如星星的樣式毁枯,也可以使用圖片,網(wǎng)上也有一些可以根據(jù)用戶點擊行為來設定星星個數(shù)的藐鹤,也可以搜索學習下赂韵。