美文网首页
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