| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 | 
							
- //
 
- //  WMZBannerFadeLayout.m
 
- //  WMZBanner
 
- //
 
- //  Created by wmz on 2020/6/15.
 
- //  Copyright © 2020 wmz. All rights reserved.
 
- //
 
- #import "WMZBannerFadeLayout.h"
 
- @interface WMZBannerFadeLayout()
 
- @property(nonatomic,assign)CGPoint collectionContenOffset;
 
- @property(nonatomic,assign)CGSize collectionContenSize;
 
- @property(nonatomic,assign)CGFloat last;
 
- @end
 
- @implementation WMZBannerFadeLayout
 
- - (instancetype)initConfigureWithModel:(WMZBannerParam *)param{
 
-     if (self = [super init]) {
 
-         self.param = param;
 
-     }
 
-     return self;
 
- }
 
- - (void)prepareLayout
 
- {
 
-     [super prepareLayout];
 
-     self.collectionView.bounces = NO;
 
-     self.collectionView.pagingEnabled = YES;
 
-     self.itemSize = self.param.wItemSize;
 
-     self.minimumInteritemSpacing = (self.param.wFrame.size.height-self.param.wItemSize.height)/2;
 
-     self.minimumLineSpacing = self.param.wLineSpacing;
 
-     self.sectionInset = self.param.wSectionInset;
 
-     self.scrollDirection = self.param.wVertical? UICollectionViewScrollDirectionVertical
 
-                                                            :UICollectionViewScrollDirectionHorizontal;
 
- }
 
- - (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect {
 
-     return [self cardOverLapTypeInRect:rect];
 
- }
 
- //卡片重叠
 
- - (NSArray<UICollectionViewLayoutAttributes *> *)cardOverLapTypeInRect:(CGRect)rect{
 
-     NSInteger itemsCount = [self.collectionView numberOfItemsInSection:0];
 
-     if (itemsCount <= 0) {
 
-         return nil;
 
-     }
 
-     NSMutableArray *mArr = [[NSMutableArray alloc] init];
 
-     if (self.param.wVertical) {
 
-         if (self.collectionView.contentOffset.y>self.last) {
 
-             self.right = YES;
 
-         }else if (self.collectionView.contentOffset.y<self.last){
 
-             self.right = NO;
 
-         }
 
-     }else{
 
-         if (self.collectionView.contentOffset.x>self.last) {
 
-             self.right = YES;
 
-         }else if (self.collectionView.contentOffset.x<self.last){
 
-             self.right = NO;
 
-         }
 
-     }
 
-     
 
-     self.param.myCurrentPath = self.param.wVertical?
 
-     (self.right?MAX(floor(self.collectionContenOffset.y / (int)self.collectionContenSize.height), 0):MAX(ceil(self.collectionContenOffset.y / (int)self.collectionContenSize.height), 0)):
 
-     (self.right?MAX(floor(self.collectionContenOffset.x / (int)self.collectionContenSize.width), 0):MAX(ceil(self.collectionContenOffset.x / (int)self.collectionContenSize.width), 0));
 
-     NSInteger minVisibleIndex = MAX(self.param.myCurrentPath-1, 0);
 
-     NSInteger maxVisibleIndex = MIN(self.param.myCurrentPath+1, itemsCount-1);
 
-     for (NSInteger i = minVisibleIndex; i <= maxVisibleIndex; i++) {
 
-         NSIndexPath *indexPath = [NSIndexPath indexPathForRow:i inSection:0];
 
-         UICollectionViewLayoutAttributes *attributes = [[self layoutAttributesForItemAtIndexPath:indexPath] copy];
 
-         CGRect rect = attributes.frame;
 
-         if (self.param.wVertical) {
 
-             rect.origin.y = self.collectionView.contentOffset.y;
 
-         }else{
 
-             rect.origin.x = self.collectionView.contentOffset.x;
 
-         }
 
-         attributes.frame = rect;
 
-         if (i == self.param.myCurrentPath) {
 
-             attributes.zIndex = 1200;
 
-         }else{
 
-             attributes.zIndex = 999-i;
 
-         }
 
-         [mArr addObject:attributes];
 
-     }
 
-     self.last = self.param.wVertical?self.collectionView.contentOffset.y:self.collectionView.contentOffset.x;
 
-     return mArr;
 
- }
 
- - (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds {
 
-     return YES;
 
- }
 
- - (CGSize)collectionContenSize{
 
-      return CGSizeMake((int)self.collectionView.bounds.size.width, (int)self.collectionView.bounds.size.height);
 
- }
 
- - (CGPoint)collectionContenOffset{
 
-     return CGPointMake((int)self.collectionView.contentOffset.x, (int)self.collectionView.contentOffset.y);
 
- }
 
- @end
 
 
  |