icarousel旋转木马的详解--当前itemscale和alpha

本文详细介绍了如何使用iCarousel实现旋转木马效果,包括设置代理和数据源、自定义视图、控制图片切换速度以及处理当前图片的缩放和透明度。示例代码展示了如何设置图片的显示数量、间距以及动画效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

- (void)viewDidLoad

{

    [super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

    

    self.view.backgroundColor = [UIColor cyanColor];

    //设置代理

    self.iCarouselView.delegate = self;

    self.iCarouselView.dataSource = self;

    //切换item图片的类型这个是自定义类型

    self.iCarouselView.type = iCarouselTypeCustom;

    //第几张图片显示在当前位置

    [self.iCarouselView scrollToItemAtIndex:4 animated:NO];

    self.iCarouselView.clipsToBounds = YES;

    //一开始中心图偏移量

    //self.iCarouselView.contentOffset = CGSizeMake(0, 0);

    //类似contentoffset

    //self.iCarouselView.viewpointOffset = CGSizeMake(0, 0);

    //控制滑动切换图片减速的快慢  默认0.95

    //self.iCarouselView.decelerationRate = 0.95;

}



#pragma mark--delegate--datasource--

//切换的图片张数--必须实现

-(NSUInteger)numberOfItemsInCarousel:(iCarousel *)carousel {

    return 7;

}

//返回要切换的图片--必须实现

-(UIView *)carousel:(iCarousel *)carousel viewForItemAtIndex:(NSUInteger)index {

    UIView *view = [[UIImageView alloc] initWithImage:[UIImage imageNamed:[NSString stringWithFormat:@"%ld.png",index+1]]];

    //展示切换图片的大小

    view.frame = CGRectMake(0, 0, 200, 200);

    [view.layer setCornerRadius:view.frame.size.height/2];

    view.layer.masksToBounds = YES;

    return view;


}

//当前屏幕显示几张item图片

-(NSUInteger) numberOfVisibleItemsInCarousel:(iCarousel *)carousel {

    return 5;

    //这个当前界面显示图片数会影响contentfttset == 当前显示数 - 1

    //例如本test 偏移量为 4 3 2 1 0 -1 -2 -3 -4

}

//item图片之间的间隔宽

-(CGFloat)carouselItemWidth:(iCarousel *)carousel {


    return 200;

}

//返回自定义滚动类型

- (CATransform3D)carousel:(iCarousel *)_carousel transformForItemView:(UIView *)view withOffset:(CGFloat)offset

{

    CATransform3D transform = CATransform3DIdentity;

//    NSLog(@">>>>>>>>>>>>>>%f",offset);

    static CGFloat max_sacle = 1.0f;

    static CGFloat min_scale = 0.6f;

    

    if (offset <= 1 && offset >= -1) {

        float tempScale = offset < 0 ? 1+offset : 1-offset;

        float slope = (max_sacle - min_scale) / 1;

        CGFloat scale = min_scale + slope * tempScale;

        transform = CATransform3DScale(transform, scale, scale, 1);

    }else{

        transform = CATransform3DScale(transform, min_scale, min_scale,1);

    }

    return CATransform3DTranslate(transform, offset * _carousel.itemWidth * 1.5, 0.0, 0.0);

}

- (void)carouselDidScroll:(iCarousel *)carousel{

    NSLog(@"滚动中");

    //当前图片alpha1 其他的图片为0.4

    for (UIView *vvv in carousel.visibleItemViews) {

        vvv.alpha = 0.4;

    }

    UIView *vv = [carousel currentItemView];

    vv.alpha = 1;

}

- (void)carouselDidEndScrollingAnimation:(iCarousel *)carousel{

 

    

    NSLog(@"结束滚动");

}

- (void)carousel:(iCarousel *)carousel didSelectItemAtIndex:(NSInteger)index{

    NSLog(@"点击item执行方法");

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值