12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- //
- // JXCategoryTitleVerticalZoomView.m
- // JXCategoryView
- //
- // Created by jiaxin on 2019/2/14.
- // Copyright © 2019 jiaxin. All rights reserved.
- //
- #import "JXCategoryTitleVerticalZoomView.h"
- #import "JXCategoryTitleVerticalZoomCellModel.h"
- #import "JXCategoryTitleVerticalZoomCell.h"
- #import "JXCategoryFactory.h"
- @interface JXCategoryTitleVerticalZoomView ()
- @property (nonatomic, assign) CGFloat currentVerticalScale; //当前垂直方向的缩放基准值
- @end
- @implementation JXCategoryTitleVerticalZoomView
- - (void)initializeData {
- [super initializeData];
- _maxVerticalFontScale = 2;
- _minVerticalFontScale = 1.3;
- _currentVerticalScale = _maxVerticalFontScale;
- self.cellWidthZoomEnabled = YES;
- self.cellWidthZoomScale = _maxVerticalFontScale;
- self.contentEdgeInsetLeft = 15;
- self.titleLabelZoomScale = _currentVerticalScale;
- self.titleLabelZoomEnabled = YES;
- self.selectedAnimationEnabled = YES;
- _maxVerticalCellSpacing = 20;
- _minVerticalCellSpacing = 10;
- self.cellSpacing = _maxVerticalCellSpacing;
- }
- - (void)listDidScrollWithVerticalHeightPercent:(CGFloat)percent {
- CGFloat currentScale = [JXCategoryFactory interpolationFrom:self.minVerticalFontScale to:self.maxVerticalFontScale percent:percent];
- BOOL shouldReloadData = NO;
- if (self.currentVerticalScale != currentScale) {
- //有变化才允许reloadData
- shouldReloadData = YES;
- }
- self.currentVerticalScale = currentScale;
- self.cellWidthZoomScale = currentScale;
- self.cellSpacing = [JXCategoryFactory interpolationFrom:self.minVerticalCellSpacing to:self.maxVerticalCellSpacing percent:percent];
- if (shouldReloadData) {
- [self refreshDataSource];
- [self refreshState];
- [self.collectionView.collectionViewLayout invalidateLayout];
- [self.collectionView reloadData];
- }
- }
- - (void)setCurrentVerticalScale:(CGFloat)currentVerticalScale {
- _currentVerticalScale = currentVerticalScale;
- self.titleLabelZoomScale = currentVerticalScale;
- }
- - (void)setMaxVerticalCellSpacing:(CGFloat)maxVerticalCellSpacing {
- _maxVerticalCellSpacing = maxVerticalCellSpacing;
- self.cellSpacing = maxVerticalCellSpacing;
- }
- - (void)setMaxVerticalFontScale:(CGFloat)maxVerticalFontScale {
- _maxVerticalFontScale = maxVerticalFontScale;
- self.titleLabelZoomScale = maxVerticalFontScale;
- self.cellWidthZoomScale = maxVerticalFontScale;
- }
- - (Class)preferredCellClass {
- return [JXCategoryTitleVerticalZoomCell class];
- }
- - (void)refreshDataSource {
- NSMutableArray *tempArray = [NSMutableArray array];
- for (int i = 0; i < self.titles.count; i++) {
- JXCategoryTitleVerticalZoomCellModel *cellModel = [[JXCategoryTitleVerticalZoomCellModel alloc] init];
- [tempArray addObject:cellModel];
- }
- self.dataSource = tempArray;
- }
- - (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index {
- [super refreshCellModel:cellModel index:index];
- JXCategoryTitleVerticalZoomCellModel *model = (JXCategoryTitleVerticalZoomCellModel *)cellModel;
- model.maxVerticalFontScale = self.maxVerticalFontScale;
- }
- @end
|