评分栏
由于好书中需要有评分栏选项,具体效果如下:
image.png
有可第三方Kit是LDXScore,头文件接口代码如下:
#import <UIKit/UIKit.h>
IB_DESIGNABLE
@interface LDXScore : UIView
/* 展示的星数 */
@property (nonatomic, assign) NSInteger show_star;
@property (nonatomic, assign) CGFloat show_score;
/* 星星之间的间隔 */
@property (nonatomic, assign) CGFloat space;
/* 距离左边的间距 */
@property (nonatomic, assign) IBInspectable CGFloat padding;
/* 最多的星数,默认为5 */
@property (nonatomic, assign) IBInspectable NSInteger max_star;
/* 是否支持选择星数 */
@property (nonatomic, assign) IBInspectable BOOL isSelect;
@property (nonatomic, strong) IBInspectable UIImage *normalImg;
@property (nonatomic, strong) IBInspectable UIImage *highlightImg;
@end
可以调用如上属性,包括最大最小星星数目、是否可选以及该栏的位置信息。
在点击评分按钮时,需要添加一行该栏,并在第二次点击时有把该栏收起;需要添加一个实例变量如下:
var showScore = false
此时可以定义点击cell时的方法:
func tableViewSelectScore(){
self.tableView?.beginUpdates()
let tempIndexPath = [NSIndexPath(forRow: 2, inSection: 0)]
if self.showScore{
self.titleArray.removeAtIndex(2)
self.tableView?.deleteRowsAtIndexPaths(tempIndexPath, withRowAnimation: .Right)
self.showScore = false
}else{
self.titleArray.insert("", atIndex: 2)
self.tableView?.insertRowsAtIndexPaths(tempIndexPath, withRowAnimation: .Left)
self.showScore = true
}
self.tableView?.endUpdates()
}
并在Row为2时,显示该栏:
if self.showScore && indexPath.row == 2 {
cell.contentView.addSubview(self.Score!)
}
为了增加一个评分栏后,点击其他cell依旧正确:
var row = indexPath.row
if self.showScore && row>=1 {
row -= 1
}
网友评论