developer
2023-05-20 c1ffd99c4b60066774eb2c97b31e4aaa014e7f51
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
//
//  CWCarousel.h
//  CWCarousel
//
//  Created by WangChen on 2018/4/3.
//  Copyright © 2018年 ChenWang. All rights reserved.
//
 
#import <UIKit/UIKit.h>
#import "CWCarouselProtocol.h"
#import "CWFlowLayout.h"
 
@interface CWCarousel : UIView
#pragma mark - < 相关属性 >
 
/**
 控件版本号
 */
@property (nonatomic, readonly, copy) NSString                  * _Nullable version;
 
 
/**
 相关代理
 */
@property (nonatomic, assign) id <CWCarouselDelegate> _Nullable delegate;
 
 
/**
 相关数据源
 */
@property (nonatomic, assign) id <CWCarouselDatasource> _Nullable datasource;
 
 
/**
 布局自定义layout
 */
@property (nonatomic, strong, readonly) CWFlowLayout    * _Nonnull flowLayout;
 
 
/**
 样式风格
 */
@property (nonatomic, assign, readonly) CWCarouselStyle   style;
 
 
/**
 style = CWCarouselStyle_H_3时的扩展高度 (1.1.0版本后该属性废弃,请不要使用了)
 */
@property (nonatomic, assign, readonly) CGFloat           addHeight;
 
 
/**
 实际的示轮播图内容的视图(其实就是基于collectionView实现的)
 */
@property (nonatomic, strong, readonly) UICollectionView  * _Nonnull carouselView;
 
 
/**
 是否自动轮播, 默认为NO
 */
@property (nonatomic, assign) BOOL                        isAuto;
 
 
/**
 自动轮播时间间隔, 默认 3s
 */
@property (nonatomic, assign) NSTimeInterval              autoTimInterval;
 
 
/**
 默认的pageControl
 1. 默认在水平居中正下方
 2. 位置可以自己根据frame自行调整
 3. 如果不想将其添加在carousel上,请自行通过调用目标父视图的addSubview方法添加到其他父视图上
 */
@property (nonatomic, strong) UIPageControl               * _Nullable pageControl;
 
 
/**
 自定义的pageControl
 */
@property (nonatomic, strong) UIView<CWCarouselPageControlProtocol> * _Nullable customPageControl;
 
 
/**
 是否开始无限轮播
 YES: 可以无限衔接
 NO: 滑动到第一张或者最后一张就不能滑动了
 */
@property (nonatomic, assign) BOOL                        endless;
#pragma mark - < 相关方法 >
/**
 创建实例构造方法
 
 @param frame 尺寸大小
 @param delegate 代理
 @param datasource 数据源
 @param flowLayout 自定义flowlayout
 @return 实例对象
 */
- (instancetype _Nullable )initWithFrame:(CGRect)frame
                        delegate:(id<CWCarouselDelegate> _Nullable)delegate
                        datasource:(id<CWCarouselDatasource> _Nullable)datasource
                       flowLayout:(nonnull CWFlowLayout *)flowLayout;
 
/**
 注册自定视图
 
 @param viewClass 自定义视图类名
 @param identifier 重用唯一标识符
 */
- (void)registerViewClass:(Class _Nullable )viewClass identifier:(NSString *_Nullable)identifier;
 
/**
 注册自定义视图
 
 @param nibName 自定义视图xib相关文件名
 @param identifier 重用唯一标识符
 */
- (void)registerNibView:(NSString *_Nullable)nibName identifier:(NSString *_Nullable)identifier;
 
 
/**
 刷新轮播图
 */
- (void)freshCarousel;
 
/**
 暂停轮播图后,可以调用改方法继续播放
 */
- (void)resumePlay;
 
/**
 轮播图暂停自动播放
 */
- (void)pause;
 
/**
 如果开启自动轮播,销毁前需要调用该方法,释放定时器.否则可能内存泄漏
 */
- (void)releaseTimer;
 
/**
 轮播图所处控制器WillAppear方法里调用
 */
- (void)controllerWillAppear;
 
/**
 轮播图所处控制器WillDisAppear方法里调用
 */
- (void)controllerWillDisAppear;
@end