美文网首页iOS开发iOS
iCarousel - 图片轮播

iCarousel - 图片轮播

作者: 居然是村长 | 来源:发表于2016-04-04 09:48 被阅读9015次

    开源地址:https://github.com/nicklockwood/iCarousel

    切换效果比较特别,都不是常见的切换效果,而且不带pageControl。效果可以在上面网址查看。

    简单使用

    • 初始化
            _banner = [iCarousel new];
            _banner.type = iCarouselTypeCylinder;// 必须在下面的之前设置,不然需要 reload
            _banner.delegate = self;
            _banner.dataSource = self;
    
            /*
             typedef NS_ENUM(NSInteger, iCarouselType)
             {
             iCarouselTypeLinear = 0, 平铺,不循环
             iCarouselTypeRotary, 外环,层叠
             iCarouselTypeInvertedRotary,内环,层叠
             iCarouselTypeCylinder, 外环,拼接
             iCarouselTypeInvertedCylinder,内环,拼接
             iCarouselTypeWheel,车轮,扇形,影响比较大。
             iCarouselTypeInvertedWheel,车轮,扇形,影响比较大。
             iCarouselTypeCoverFlow,翻页 不循环
             iCarouselTypeCoverFlow2,翻页2,不循环
             iCarouselTypeTimeMachine,向上堆叠,不循环
             iCarouselTypeInvertedTimeMachine,反堆叠,不循环
             iCarouselTypeCustom
             };
             */
    
    • 常用代理
    -(NSInteger)numberOfItemsInCarousel:(iCarousel *)carousel{
        return [self.dataSource count];
    }
    
    -(UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSInteger)index reusingView:(UIView *)view{
        if (view == nil) {
            UIView *colorView = [UIView new];
            colorView.backgroundColor = self.dataSource[index];
            colorView.frame = CGRectMake(0, 0, 300, CGRectGetHeight(carousel.bounds));
            return colorView;
        }else{
            view.backgroundColor = self.dataSource[index];
            return view;
        }
        return nil;
    }
    
    - (void)carousel:(__unused iCarousel *)carousel didSelectItemAtIndex:(NSInteger)index {
        NSLog(@"Tapped view number: %ld", (long)index);
    }
    
    - (void)carouselCurrentItemIndexDidChange:(__unused iCarousel *)carousel {
        NSLog(@"Index: %@", @(self.banner.currentItemIndex));
    }
     
    
    • 自己加个 pageControl
    // 支持循环的 可用(最后一个的下一个是第0个)
        if (index == [self.dataSource count] - 1) {
            [carousel scrollToItemAtIndex:0 animated:YES];
        } else {
            [carousel scrollToItemAtIndex:index+1 animated:YES];
        }
    

    其他

    其他属性和代理有很多。并没有深入使用,自定义3D 转场也是给跪了。一般使用差不多了。待研究。

    1

    相关文章

      网友评论

      • 梁森的简书:如何设置两边小图的高度呢?
      • 6a8a765bc63f:怎么设置 不可循环 但效果是custom那种效果就行
        焱止殇:- (CGFloat)carousel:(__unused iCarousel *)carousel valueForOption:(iCarouselOption)option withDefault:(CGFloat)value
        返回的option为iCarouselOptionWrap时,返回NO
        居然是村长:@韩亚钊 那你可以用sdcycle那个库就好了~这个我也忘记了

      本文标题:iCarousel - 图片轮播

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