WKCScrollView
WKCScrollView 用作什么?
- WKCScrollView 是基于 UIScrollView 的视图,其原理类似于 UITableView。它只加载允许矩形内的子视图,并有一个 viewsPool 来存储可见视图。
- 它很容易初始化卡片视图,无论是水平还是垂直方向。同时,它也可以居中对齐,只需设置属性
isAlignmentCenter
为YES
。 - 当您将属性
loopEnabled
设置为YES
时,可以在循环模式中滚动。同样,当属性pagingEnabled
设置为YES
时,可以进行分页。 - 它具有属性
isAutoScroll
,当其为Yes
时,WKCScrollView 将自动滚动。同样,您可以轻松设置间隔和滚动方向。在这种情况下,也可以实现新闻滚动。
WKCScrollView 的主要原理是什么?
如上所述,重点是它的缓存。子视图是基于观察边缘视图的出现和消失来加载的。当子视图加载时,它也被添加到 viewsPool 中。当子视图释放时,它从 SuperView 和 viewsPool 中删除。
如何使用 WKCScrollView?
与 UITableView 使用相同。例如:#import <WKCScrollView/WKCScrollView.h>
- 当您初始化 WKCScrollView 时,您应该注册类的类型。
_scrollView = [[WKCScrollView alloc] initWithFrame:CGRectMake(0, 200, 375, 300)];
_scrollView.backgroundColor = [UIColor whiteColor];
[_scrollView registerClass:[UIImageView class] forItemReuseIdentifier:@"view"];
[_scrollView registerClass:[UIImageView class] forItemReuseIdentifier:@"new"];
- 您需要将
delegate
和dataSource
设置到您控制器或其他您想使用的对象上,并符合其协议。
_scrollView.dataSource = self;
_scrollView.delegate = self;
@interface WKCCommunityViewController ()<WKCScrollViewDelegate,WKCScrollViewDataSource>
- 需要的三种方法的作用是设置数字、大小和已加载视图。
- (NSInteger)numberOfViewsInWKCScrollView:(WKCScrollView *)scrollview;
- (CGSize)WKCScrollViewItemSize:(WKCScrollView *)scrollview;
- (__kindof UIView *)WKCScrollView:(WKCScrollView *)scrollview viewAtIndex:(NSInteger)index;
在WKCScrollView:viewAtIndex:
方法中,你可以使用另一个方法dequeueReusableItemWithIdentifier:
来获取已注册的视图。
UIImageView *view = [scrollview dequeueReusableItemWithIdentifier:@"view"];
此外,你可以在不同的index
中设置不同的视图。
if (index == 0) {
UIImageView *view = [scrollview dequeueReusableItemWithIdentifier:@"view"];
view.contentMode = UIViewContentModeScaleAspectFill;
view.backgroundColor = [UIColor yellowColor];
view.layer.cornerRadius = 8;
view.layer.masksToBounds = YES;
return view;
}else {
UIImageView *view = [scrollview dequeueReusableItemWithIdentifier:@"new"]; view.backgroundColor = [UIColor redColor];
view.contentMode = UIViewContentModeScaleAspectFill;
view.image = [UIImage imageNamed:self.dataSource[index]];
view.clipsToBounds = YES;
return view;
}
- 当您的dataSource重新加载视图时。
[self.scrollView reloadData];
- 更有方便的是,有两个可选方法设置类似于UICollectionView的间距。
- (CGFloat)interitemSpacingInWKCScrollView:(WKCScrollView *)scrollview {
return 20;
}
- (CGFloat)lineSpacingInWKCScrollView:(WKCScrollView *)scrollview {
return 25;
}
- 你可以使用额外的方法,例如selectedItem。
- (void)WKCScrollViewDidScroll:(WKCScrollView *)scrollView contentOffset:(CGPoint)offset;
- (void)WKCScrollViewWillBeginDragging:(WKCScrollView *)scrollView;
- (void)WKCScrollViewDidEndDragging:(WKCScrollView *)scrollView willDecelerate:(BOOL)decelerate;
- (void)WKCScrollViewWillBeginDecelerating:(WKCScrollView *)scrollView;
- (void)WKCScrollViewDidEndDecelerating:(WKCScrollView *)scrollView;
- (void)WKCScrollViewDidScrollToTop:(WKCScrollView *)scrollView;
- (void)WKCScrollView:(WKCScrollView *)scrollView didSelectItemAtIndex:(NSInteger)index;
在这种情况下,你已经设置了视图。
- 当设置属性
isAlignmentCenter
为YES
时。
- 当设置属性
loopEnabled
为YES
时。
- 当设置属性
pagingEnabled
为YES
时。
- 当设置属性
isAutoScroll
为YES
时。
- 当设置不同的
autoScrollDirection
时。
_scrollView.autoScrollDirection = WKCScrollViewAutoScrollDirectionRight;
- 当设置
[_scrollView setPagingEnabled:YES isAnimated:YES];
时,默认缩放为1.2。
为了方便,它有一个WKCPageControlView可以用作与WKCScrollView相同的用途。
#import <WKCScrollView/WKCPageControlView.h>
以下是一些属性。有三种对齐方式。
typedef NS_ENUM(NSInteger,WKCPageControlViewPageAlignment) {
WKCPageControlViewPageAlignmentCenter, //居中
WKCPageControlViewPageAlignmentLeft, //左
WKCPageControlViewPageAlignmentRight //靠右
};
@property (nonatomic, weak) id<WKCPageControlViewDataSource> dataSource;
@property (nonatomic, assign) WKCPageControlViewPageAlignment alignment;
@property (nonatomic, strong) UIImage * backgroundImage;
@property (nonatomic, assign) NSInteger numberOfItem;
@property (nonatomic, assign) CGSize currentItemSize;
@property (nonatomic, assign) CGSize extraItemSize;
@property (nonatomic, assign) CGFloat itemSpacing;
@property (nonatomic, assign) CGFloat edgeSpaing;
@property (nonatomic, assign) NSInteger currentIndex;
但不同的是,它只有dataSource来设置视图,没有回调的方法。您可以在current
和extra
中设置不同的视图。
- (NSInteger)numberOfViewsInWKCPageControlView:(WKCPageControlView *)pageControlView;
- (__kindof UIView *)WKCPageControlViewForCurrentItem:(WKCPageControlView *)pageControlView;
- (__kindof UIView *)WKCPageControlViewForExtraItem:(WKCPageControlView *)pageControlView;
- setUp
- (WKCPageControlView *)pageControlView {
if (!_pageControlView) {
_pageControlView = [[WKCPageControlView alloc] initWithFrame:CGRectMake(0, 500, 375, 60)];
_pageControlView.dataSource = self;
_pageControlView.currentItemSize = CGSizeMake(50, 50);
_pageControlView.extraItemSize = CGSizeMake(30, 30);
_pageControlView.itemSpacing = 8;
_pageControlView.edgeSpaing = 15;
_pageControlView.alignment = WKCPageControlViewPageAlignmentCenter;
_pageControlView.backgroundColor = [UIColor greenColor];
}
return _pageControlView;
}
- dataSource回调
- (NSInteger)numberOfViewsInWKCPageControlView:(WKCPageControlView *)pageControlView {
return self.dataSource.count;
}
- (UIView *)WKCPageControlViewForCurrentItem:(WKCPageControlView *)pageControlView {
UIView *view = [UIView new];
view.backgroundColor = [UIColor redColor];
return view;
}
- (UIView *)WKCPageControlViewForExtraItem:(WKCPageControlView *)pageControlView {
UIView *view = [UIView new];
view.backgroundColor = [UIColor grayColor];
return view;
}
- 根据您的WKCScrollView设置
CurrentIndex
。
- (void)WKCScrollViewDidEndDecelerating:(WKCScrollView *)scrollView {
[self.pageControlView setCurrentIndex:scrollView.currentIndex];
}