iOS实战【好书】之评分栏

评分栏

由于好书中需要有评分栏选项,具体效果如下:


image.png

有可第三方Kit是LDXScore,头文件接口代码如下:

#import 
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
        }

你可能感兴趣的:(iOS实战【好书】之评分栏)