提交
This commit is contained in:
13
Pods/JXCategoryView/Sources/Number/JXCategoryNumberCell.h
generated
Normal file
13
Pods/JXCategoryView/Sources/Number/JXCategoryNumberCell.h
generated
Normal file
@@ -0,0 +1,13 @@
|
||||
//
|
||||
// JXCategoryNumberCell.h
|
||||
// DQGuess
|
||||
//
|
||||
// Created by jiaxin on 2018/4/9.
|
||||
// Copyright © 2018年 jingbo. All rights reserved.
|
||||
//
|
||||
|
||||
#import "JXCategoryTitleCell.h"
|
||||
|
||||
@interface JXCategoryNumberCell : JXCategoryTitleCell
|
||||
@property (nonatomic, strong) UILabel *numberLabel;
|
||||
@end
|
||||
62
Pods/JXCategoryView/Sources/Number/JXCategoryNumberCell.m
generated
Normal file
62
Pods/JXCategoryView/Sources/Number/JXCategoryNumberCell.m
generated
Normal file
@@ -0,0 +1,62 @@
|
||||
//
|
||||
// JXCategoryNumberCell.m
|
||||
// DQGuess
|
||||
//
|
||||
// Created by jiaxin on 2018/4/9.
|
||||
// Copyright © 2018年 jingbo. All rights reserved.
|
||||
//
|
||||
|
||||
#import "JXCategoryNumberCell.h"
|
||||
#import "JXCategoryNumberCellModel.h"
|
||||
|
||||
@interface JXCategoryNumberCell ()
|
||||
@property (nonatomic, strong) NSLayoutConstraint *numberCenterXConstraint;
|
||||
@property (nonatomic, strong) NSLayoutConstraint *numberCenterYConstraint;
|
||||
@property (nonatomic, strong) NSLayoutConstraint *numberHeightConstraint;
|
||||
@property (nonatomic, strong) NSLayoutConstraint *numberWidthConstraint;
|
||||
@end
|
||||
|
||||
@implementation JXCategoryNumberCell
|
||||
|
||||
- (void)prepareForReuse {
|
||||
[super prepareForReuse];
|
||||
|
||||
self.numberLabel.text = nil;
|
||||
}
|
||||
|
||||
- (void)initializeViews {
|
||||
[super initializeViews];
|
||||
|
||||
self.numberLabel = [[UILabel alloc] init];
|
||||
self.numberLabel.textAlignment = NSTextAlignmentCenter;
|
||||
self.numberLabel.layer.masksToBounds = YES;
|
||||
[self.contentView addSubview:self.numberLabel];
|
||||
self.numberLabel.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
self.numberCenterXConstraint = [self.numberLabel.centerXAnchor constraintEqualToAnchor:self.titleLabel.trailingAnchor];
|
||||
self.numberCenterYConstraint = [self.numberLabel.centerYAnchor constraintEqualToAnchor:self.titleLabel.topAnchor];
|
||||
self.numberHeightConstraint = [self.numberLabel.heightAnchor constraintEqualToConstant:0];
|
||||
self.numberWidthConstraint = [self.numberLabel.widthAnchor constraintEqualToConstant:0];
|
||||
[NSLayoutConstraint activateConstraints:@[self.numberCenterXConstraint, self.numberCenterYConstraint, self.numberWidthConstraint, self.numberHeightConstraint]];
|
||||
}
|
||||
|
||||
- (void)reloadData:(JXCategoryBaseCellModel *)cellModel {
|
||||
[super reloadData:cellModel];
|
||||
|
||||
JXCategoryNumberCellModel *myCellModel = (JXCategoryNumberCellModel *)cellModel;
|
||||
self.numberLabel.hidden = (myCellModel.count == 0);
|
||||
self.numberLabel.backgroundColor = myCellModel.numberBackgroundColor;
|
||||
self.numberLabel.font = myCellModel.numberLabelFont;
|
||||
self.numberLabel.textColor = myCellModel.numberTitleColor;
|
||||
self.numberLabel.text = myCellModel.numberString;
|
||||
self.numberLabel.layer.cornerRadius = myCellModel.numberLabelHeight/2.0;
|
||||
self.numberHeightConstraint.constant = myCellModel.numberLabelHeight;
|
||||
self.numberCenterXConstraint.constant = myCellModel.numberLabelOffset.x;
|
||||
self.numberCenterYConstraint.constant = myCellModel.numberLabelOffset.y;
|
||||
if (myCellModel.count < 10 && myCellModel.shouldMakeRoundWhenSingleNumber) {
|
||||
self.numberWidthConstraint.constant = myCellModel.numberLabelHeight;
|
||||
}else {
|
||||
self.numberWidthConstraint.constant = myCellModel.numberStringWidth + myCellModel.numberLabelWidthIncrement;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
25
Pods/JXCategoryView/Sources/Number/JXCategoryNumberCellModel.h
generated
Normal file
25
Pods/JXCategoryView/Sources/Number/JXCategoryNumberCellModel.h
generated
Normal file
@@ -0,0 +1,25 @@
|
||||
//
|
||||
// JXCategoryNumberCellModel.h
|
||||
// DQGuess
|
||||
//
|
||||
// Created by jiaxin on 2018/4/24.
|
||||
// Copyright © 2018年 jingbo. All rights reserved.
|
||||
//
|
||||
|
||||
#import "JXCategoryTitleCellModel.h"
|
||||
|
||||
@interface JXCategoryNumberCellModel : JXCategoryTitleCellModel
|
||||
|
||||
@property (nonatomic, assign) NSInteger count;
|
||||
@property (nonatomic, copy) NSString *numberString;
|
||||
@property (nonatomic, assign, readonly) CGFloat numberStringWidth;
|
||||
@property (nonatomic, copy) void(^numberStringFormatterBlock)(NSInteger number);
|
||||
@property (nonatomic, strong) UIColor *numberBackgroundColor;
|
||||
@property (nonatomic, strong) UIColor *numberTitleColor;
|
||||
@property (nonatomic, assign) CGFloat numberLabelWidthIncrement;
|
||||
@property (nonatomic, assign) CGFloat numberLabelHeight;
|
||||
@property (nonatomic, strong) UIFont *numberLabelFont;
|
||||
@property (nonatomic, assign) CGPoint numberLabelOffset;
|
||||
@property (nonatomic, assign) BOOL shouldMakeRoundWhenSingleNumber;
|
||||
|
||||
@end
|
||||
37
Pods/JXCategoryView/Sources/Number/JXCategoryNumberCellModel.m
generated
Normal file
37
Pods/JXCategoryView/Sources/Number/JXCategoryNumberCellModel.m
generated
Normal file
@@ -0,0 +1,37 @@
|
||||
//
|
||||
// JXCategoryNumberCellModel.m
|
||||
// DQGuess
|
||||
//
|
||||
// Created by jiaxin on 2018/4/24.
|
||||
// Copyright © 2018年 jingbo. All rights reserved.
|
||||
//
|
||||
|
||||
#import "JXCategoryNumberCellModel.h"
|
||||
|
||||
@implementation JXCategoryNumberCellModel
|
||||
|
||||
- (void)setNumberString:(NSString *)numberString {
|
||||
_numberString = numberString;
|
||||
|
||||
[self updateNumberSizeWidthIfNeeded];
|
||||
}
|
||||
|
||||
- (void)setNumberLabelHeight:(CGFloat)numberLabelHeight {
|
||||
_numberLabelHeight = numberLabelHeight;
|
||||
|
||||
[self updateNumberSizeWidthIfNeeded];
|
||||
}
|
||||
|
||||
- (void)setNumberLabelFont:(UIFont *)numberLabelFont {
|
||||
_numberLabelFont = numberLabelFont;
|
||||
|
||||
[self updateNumberSizeWidthIfNeeded];
|
||||
}
|
||||
|
||||
- (void)updateNumberSizeWidthIfNeeded {
|
||||
if (self.numberLabelFont != nil) {
|
||||
_numberStringWidth = [self.numberString boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, self.numberLabelHeight) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : self.numberLabelFont} context:nil].size.width;
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
60
Pods/JXCategoryView/Sources/Number/JXCategoryNumberView.h
generated
Normal file
60
Pods/JXCategoryView/Sources/Number/JXCategoryNumberView.h
generated
Normal file
@@ -0,0 +1,60 @@
|
||||
//
|
||||
// JXCategoryNumberView.h
|
||||
// DQGuess
|
||||
//
|
||||
// Created by jiaxin on 2018/4/9.
|
||||
// Copyright © 2018年 jingbo. All rights reserved.
|
||||
//
|
||||
|
||||
#import "JXCategoryTitleView.h"
|
||||
#import "JXCategoryNumberCell.h"
|
||||
#import "JXCategoryNumberCellModel.h"
|
||||
|
||||
@interface JXCategoryNumberView : JXCategoryTitleView
|
||||
|
||||
/**
|
||||
需要与titles的count对应
|
||||
*/
|
||||
@property (nonatomic, strong) NSArray <NSNumber *> *counts;
|
||||
|
||||
/**
|
||||
内部默认不会格式化数字,直接转成字符串显示。比如业务需要数字超过999显示999+,可以通过该block实现。
|
||||
*/
|
||||
@property (nonatomic, copy) NSString *(^numberStringFormatterBlock)(NSInteger number);
|
||||
|
||||
/**
|
||||
numberLabel的font,默认:[UIFont systemFontOfSize:11]
|
||||
*/
|
||||
@property (nonatomic, strong) UIFont *numberLabelFont;
|
||||
|
||||
/**
|
||||
数字的背景色,默认:[UIColor colorWithRed:241/255.0 green:147/255.0 blue:95/255.0 alpha:1]
|
||||
*/
|
||||
@property (nonatomic, strong) UIColor *numberBackgroundColor;
|
||||
|
||||
/**
|
||||
数字的title颜色,默认:[UIColor whiteColor]
|
||||
*/
|
||||
@property (nonatomic, strong) UIColor *numberTitleColor;
|
||||
|
||||
/**
|
||||
numberLabel的宽度补偿,label真实的宽度是文字内容的宽度加上补偿的宽度,默认:10
|
||||
*/
|
||||
@property (nonatomic, assign) CGFloat numberLabelWidthIncrement;
|
||||
|
||||
/**
|
||||
numberLabel的高度,默认:14
|
||||
*/
|
||||
@property (nonatomic, assign) CGFloat numberLabelHeight;
|
||||
|
||||
/**
|
||||
numberLabel x,y方向的偏移 (+值:水平方向向右,竖直方向向下)
|
||||
*/
|
||||
@property (nonatomic, assign) CGPoint numberLabelOffset;
|
||||
|
||||
/**
|
||||
当是单一数字时,是否让numberLabel变成圆。即numberLabel的宽度等于高度,cornerRadius等于高度/2。当为true,单一数字时会忽略numberLabelWidthIncrement属性。默认为NO;
|
||||
*/
|
||||
@property (nonatomic, assign) BOOL shouldMakeRoundWhenSingleNumber;
|
||||
|
||||
@end
|
||||
61
Pods/JXCategoryView/Sources/Number/JXCategoryNumberView.m
generated
Normal file
61
Pods/JXCategoryView/Sources/Number/JXCategoryNumberView.m
generated
Normal file
@@ -0,0 +1,61 @@
|
||||
//
|
||||
// JXCategoryNumberView.m
|
||||
// DQGuess
|
||||
//
|
||||
// Created by jiaxin on 2018/4/9.
|
||||
// Copyright © 2018年 jingbo. All rights reserved.
|
||||
//
|
||||
|
||||
#import "JXCategoryNumberView.h"
|
||||
|
||||
@implementation JXCategoryNumberView
|
||||
|
||||
- (void)dealloc {
|
||||
self.numberStringFormatterBlock = nil;
|
||||
}
|
||||
|
||||
- (void)initializeData {
|
||||
[super initializeData];
|
||||
|
||||
self.cellSpacing = 25;
|
||||
_numberTitleColor = [UIColor whiteColor];
|
||||
_numberBackgroundColor = [UIColor colorWithRed:241/255.0 green:147/255.0 blue:95/255.0 alpha:1];
|
||||
_numberLabelHeight = 14;
|
||||
_numberLabelWidthIncrement = 10;
|
||||
_numberLabelFont = [UIFont systemFontOfSize:11];
|
||||
_shouldMakeRoundWhenSingleNumber = NO;
|
||||
}
|
||||
|
||||
- (Class)preferredCellClass {
|
||||
return [JXCategoryNumberCell class];
|
||||
}
|
||||
|
||||
- (void)refreshDataSource {
|
||||
NSMutableArray *tempArray = [NSMutableArray arrayWithCapacity:self.titles.count];
|
||||
for (int i = 0; i < self.titles.count; i++) {
|
||||
JXCategoryNumberCellModel *cellModel = [[JXCategoryNumberCellModel alloc] init];
|
||||
[tempArray addObject:cellModel];
|
||||
}
|
||||
self.dataSource = [NSArray arrayWithArray:tempArray];
|
||||
}
|
||||
|
||||
- (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index {
|
||||
[super refreshCellModel:cellModel index:index];
|
||||
|
||||
JXCategoryNumberCellModel *myCellModel = (JXCategoryNumberCellModel *)cellModel;
|
||||
myCellModel.count = [self.counts[index] integerValue];
|
||||
if (self.numberStringFormatterBlock != nil) {
|
||||
myCellModel.numberString = self.numberStringFormatterBlock(myCellModel.count);
|
||||
}else {
|
||||
myCellModel.numberString = [NSString stringWithFormat:@"%ld", (long)myCellModel.count];
|
||||
}
|
||||
myCellModel.numberBackgroundColor = self.numberBackgroundColor;
|
||||
myCellModel.numberTitleColor = self.numberTitleColor;
|
||||
myCellModel.numberLabelHeight = self.numberLabelHeight;
|
||||
myCellModel.numberLabelOffset = self.numberLabelOffset;
|
||||
myCellModel.numberLabelWidthIncrement = self.numberLabelWidthIncrement;
|
||||
myCellModel.numberLabelFont = self.numberLabelFont;
|
||||
myCellModel.shouldMakeRoundWhenSingleNumber = self.shouldMakeRoundWhenSingleNumber;
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user