iOS开源类iCarousel介绍

1.   iCarousel类的作用

  iCarousel是一个类,它继承于UIView。用于简化实现各种类型的旋转木马(分页滚动视图)iPhone、iPad和Mac OS。iCarousel实现一些常见的影响如圆柱、平面式的旋转木马。经过  iCarousel类的封装,使iCarousel类的使用方式类似于UITableView的使用,每一个界面类似于一个单元格。 iCarousel类为我们提供了十几种分页效果,我们还可以使用 iCarousel类中的 (BOOL) vertical属性设置显示效果是垂直显示还是水平显示。

   iCarousel类的实现方式,先通过( iCarouselDataSource)协议方法确定需要显示视图的个数,和创建需要显示的视图。 iCarousel内先创建一个可变字典,用于存储需要显示的单元格视图。创建一个父视图用于显示单元格视图,从字典中取出需要显示的单元格视图添加到创建父视图上,用于显示需要创建的单元格视图,在iCarousel类的内部对这些需要显示的单元格视图进行布局。

(1)iCarousel的几个重要的基本属性

iCarouselType; //视图的显示类型

@property (nonatomic, assign, getter = isScrollEnabled) BOOL scrollEnabled;   // 设置在否启动

                                                                iCarousel、的滑动效果,默认为YES

@property (nonatomicassigngetter = isVertical) BOOL vertical;       //设置单元格显示是水平或

                                                 垂直, 默认 NO(水平)

@property (nonatomicassignCGSize contentOffset;             //用于设置滚动视图的水平位置

 @property (nonatomic, assign) BOOL centerItemWhenSelected;   //用于设置被选中的单元格在否在中心

                                                                     显示 默认为YES

@property (nonatomicreadonlygetter = isWrapEnabled) BOOL wrapEnabled; //设置是否启动旋转木

                                                               马效果/外部无法直接设置,默认为NO

iCarousel代理属性

@property (nonatomicweak_delegateIBOutlet id<</span>iCarouselDataSource> dataSource;

 @property (nonatomic, weak_delegate) IBOutlet id<</span>iCarouselDelegate> delegate;

(2)iCarousel的代理方法与UITableView的代理方法实现有些相似,

@protocol iCarouselDataSource <<span class="s2">NSObject>

- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel;   //返回显示界面的个数

 - (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView*)view;                                                                                                //返回每个需要显示的视图

@protocol iCarouselDelegate <<span class="s2">NSObject>//

@optional

- (CGFloat)carousel:(iCarousel *)carousel valueForOption:(iCarouselOption)option withDefault:(CGFloat)value;             //此协议方法可以设置每个视图之间的间隙的各种位置属性,还可以通过此协议方法设置是否采用旋转木马效果

2. iCarousel类的使用

     iCarousel类 的使用和实现UITableView基本类似

(1)创建iCarousel类的对象

- (void)viewDidLoad
{
    [super viewDidLoad];
    iCarousel *iCarouselview = [[iCarousel alloc] initWithFrame:self.view.bounds];
    //设置显示效果类型
    iCarouselview.type = <span style="font-family: 'Microsoft YaHei', SimSun, Verdana, Arial, Helvetica, sans-serif; line-height: 1.5;">iCarouselTypeCylinder</span>;
    //设置代理
    iCarouselview.dataSource = self;
    iCarouselview.delegate = self;
    [self.view addSubview:iCarouselview];
}

(2)实现代理协议
#pragma mark iCarouselDataSource
- (NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel{
    
    return 100;
    
}
- (UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index reusingView:(UIView *)view{
    UILabel *label = nil;
    
    if (view == nil)
    {
        view =[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 150.0f, 150.0f)] ;
        view.backgroundColor = [UIColor blueColor];

        label = [[UILabel alloc] initWithFrame:view.bounds];
        label.backgroundColor = [UIColor clearColor];
        label.textAlignment = NSTextAlignmentCenter;
        label.font = [label.font fontWithSize:50];
        label.tag = 1;
        [view addSubview:label];
    }
    else
    {
        label = (UILabel *)[view viewWithTag:1];
    }
    label.text = [NSString stringWithFormat:@"%d",index];
    
    return view;
}


设置视图间间隙的各种属性

typedef enum

{

    iCarouselOptionWrap = 0,    //设置旋转木马效果

    iCarouselOptionShowBackfaces, 

    iCarouselOptionOffsetMultiplier,

    iCarouselOptionVisibleItems,

    iCarouselOptionCount,

    iCarouselOptionArc, 

iCarouselOptionAngle,

    iCarouselOptionRadius,  

    iCarouselOptionTilt,

    iCarouselOptionSpacing, //设置视图间的间隙

    iCarouselOptionFadeMin,

    iCarouselOptionFadeMax,

    iCarouselOptionFadeRange

}

iCarouselOption;     //用于设置视图间间隙的各种属性

#pragma mark iCarouselDelegate
- (CGFloat)carousel:(iCarousel *)carousel valueForOption:(iCarouselOption)option withDefault:(CGFloat)value{

    switch (option)
    {
        case iCarouselOptionWrap:
        {
            //设置是否实现旋转木马效果
            return YES;
        }
        case iCarouselOptionSpacing:
        {
            //设置没个界面直接的间隙,默认为0.25
            return value * 2.0f;
        }
        default:
        {
            return value;
        }
    }
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值