BBACyclePagerTransformLayout.h
2.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
//
// BBACyclePagerTransformLayout.h
// CyclePagerView
//
// Created by xuxiaonan on 2017/9/28.
// Copyright © 2017年 xuxiaonan. All rights reserved.
//
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
typedef NS_ENUM(NSUInteger, BBACyclePagerTransformLayoutType) {
BBACyclePagerTransformLayoutNormal,
BBACyclePagerTransformLayoutLinear,
BBACyclePagerTransformLayoutCoverflow,
};
@class BBACyclePagerTransformLayout;
@protocol BBACyclePagerTransformLayoutDelegate <NSObject>
// initialize layout attributes
- (void)pagerViewTransformLayout:(BBACyclePagerTransformLayout*)pagerViewTransformLayout initializeTransformAttributes:(UICollectionViewLayoutAttributes *)attributes;
// apply layout attributes
- (void)pagerViewTransformLayout:(BBACyclePagerTransformLayout*)pagerViewTransformLayout applyTransformToAttributes:(UICollectionViewLayoutAttributes *)attributes;
@end
@interface BBACyclePagerViewLayout : NSObject
@property (nonatomic, assign) CGSize itemSize;
@property (nonatomic, assign) CGFloat itemSpacing;
@property (nonatomic, assign) UIEdgeInsets sectionInset;
@property (nonatomic, assign) BBACyclePagerTransformLayoutType layoutType;
@property (nonatomic, assign) CGFloat minimumScale; // sacle default 0.8
@property (nonatomic, assign) CGFloat minimumAlpha; // alpha default 1.0
@property (nonatomic, assign) CGFloat maximumAngle; // angle is % default 0.2
@property (nonatomic, assign) BOOL isInfiniteLoop; // infinte scroll
@property (nonatomic, assign) CGFloat rateOfChange; // scale and angle change rate
@property (nonatomic, assign) BOOL adjustSpacingWhenScroling;
/**
pageView cell item vertical centering
*/
@property (nonatomic, assign) BOOL itemVerticalCenter;
/**
first and last item horizontalc enter, when isInfiniteLoop is NO
*/
@property (nonatomic, assign) BOOL itemHorizontalCenter;
// sectionInset
@property (nonatomic, assign, readonly) UIEdgeInsets onlyOneSectionInset;
@property (nonatomic, assign, readonly) UIEdgeInsets firstSectionInset;
@property (nonatomic, assign, readonly) UIEdgeInsets lastSectionInset;
@property (nonatomic, assign, readonly) UIEdgeInsets middleSectionInset;
@end
@interface BBACyclePagerTransformLayout : UICollectionViewFlowLayout
@property (nonatomic, strong) BBACyclePagerViewLayout *layout;
@property (nonatomic, weak, nullable) id<BBACyclePagerTransformLayoutDelegate> delegate;
@end
NS_ASSUME_NONNULL_END