最近在做一个选择器,但不是系统的那种选择器。最后在网上找到了一个 开源库。。iCarousel
还算是比较好用的,但是在使用之前,必须要先熟悉他的一些熟悉和代理回调方法,不然比较难以实现。。有点摸不着头脑的感觉,毕竟不熟悉的东西都会认为深不可测。。
iCarouselType: 很重要的属性,关乎着你的样式。。
iCarouselTypeLinear = 0,
iCarouselTypeRotary,
iCarouselTypeInvertedRotary,
iCarouselTypeCylinder,
iCarouselTypeInvertedCylinder,
iCarouselTypeWheel,
iCarouselTypeInvertedWheel,
iCarouselTypeCoverFlow,
iCarouselTypeCoverFlow2,
iCarouselTypeTimeMachine,
iCarouselTypeInvertedTimeMachine,
iCarouselTypeCustom
还是直接上代码:
/// 初始化 self.carous = [[iCarousel alloc] initWithFrame:CGRectMake(0, 150, 375, 375)]; /// 设置代理 self.carous.delegate = self; self.carous.dataSource = self; [self.view addSubview:_carous]; self.carous.backgroundColor = [UIColor cyanColor]; /// 设置样式 self.carous.type = iCarouselTypeLinear;
/// 设置数据源
self.dataArray = [NSMutableArray array];
self.titleArray = [NSMutableArray array];
for (int i = 0; i < 40; i++) {
UIColor *color = [UIColor colorWithWhite:arc4random()%255/255.0 alpha:1];
[self.titleArray addObject:[NSString stringWithFormat:@"%d",i]];
[self.dataArray addObject:color];
}
///刷新数据源
[self.carous reloadData];
代理方法实现
#pragma mark ---- iCarouselDataSource
/// 最重要的代理之一,数据源的设置,不然其他都是白搭
- (NSInteger)numberOfItemsInCarousel:(iCarousel *)carousel {
return self.dataArray.count;
}
/// 内容视图的设置,类似于tableView 这些列表视图的设置。
- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSInteger)index reusingView:(UIView *)view {
/// 这里没有考虑复用,在实际项目中,还是的采用复用
UILabel *lb = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 80, 80)];
lb.textAlignment = NSTextAlignmentCenter;
if (index < self.dataArray.count) {
UIColor *color = self.dataArray[index];
lb.backgroundColor = color;
}
if (index < self.titleArray.count) {
NSString *title = self.titleArray[index];
lb.text = title;
}
return lb;
}
另外,在下面的这个代理方法中,有几个相对重要的参数,需要通过这个代理去设置,因为是只读属性,一个是 iCarouselOptionWrap ,,另外一个是 iCarouselOptionVisibleItems
- (CGFloat)carousel:(iCarousel *)carousel valueForOption:(iCarouselOption)option withDefault:(CGFloat)value {
switch (option) {
case iCarouselOptionWrap:
/// 是否是可以旋转的 *****
return self.wrapEnabled;
break;
case iCarouselOptionShowBackfaces:
///
return self.showBackfaces;
break;
case iCarouselOptionOffsetMultiplier:
/// 偏移乘数
break;
case iCarouselOptionVisibleItems:
/// 可以看到的有多少个 *****
break;
}
}
网友评论