美文网首页
iOS 旋转木马 iCarousel 实现细节

iOS 旋转木马 iCarousel 实现细节

作者: Nulll | 来源:发表于2018-10-26 15:46 被阅读107次

最近在做一个选择器,但不是系统的那种选择器。最后在网上找到了一个 开源库。。iCarousel

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;

}

}

相关文章

网友评论

      本文标题:iOS 旋转木马 iCarousel 实现细节

      本文链接:https://www.haomeiwen.com/subject/ghfltqtx.html