iCarousel不顺利

时间:2013-10-29 15:09:35

标签: ios icarousel

我正在使用iCarousel来创建一系列图像。代码是:

- (CATransform3D)carousel:(iCarousel *)_carousel itemTransformForOffset:(CGFloat)offset baseTransform:(CATransform3D)transform 
{
    CGFloat count = 5; 
    CGFloat spacing = 0.9f; 
    CGFloat arc = M_PI * 0.3f; 
    CGFloat radius = fmaxf(140.0 * spacing / 2.0f, 140.0 * spacing / 2.0f / tanf(arc/2.0f/count));
    CGFloat angle = offset / count * arc;
    radius = -radius;
    angle = -angle;
    transform = CATransform3DTranslate(transform, radius * sin(angle),radius * cos(angle) - radius, 0.0f);                    
    return transform;                                                    
 }

但是当我滚动图像时会产生一种难看的效果,过渡不顺畅,图像会以一种生涩的方式出现,但我想要顺利出来。你能帮助我吗?感谢。

编辑:问题是当我滚动图像时,过渡不平滑,图像在背面的图像前面出现,与其他图像分离。实际上,只有当滚动结束时,图像才会出现在其他图像前面,这会导致不良影响。

1 个答案:

答案 0 :(得分:4)

我们在iCarousel的上一次实施中遇到了类似的问题。以下是我们修复它的方法:

- (CGFloat)carousel:(iCarousel *)carousel valueForOption:(iCarouselOption)option withDefault:(CGFloat)value {

    if (option == iCarouselOptionSpacing) {
    return value;// * 1.05f;
    } else if(option == iCarouselOptionWrap) {
    return NO;
    } else if(option == iCarouselOptionVisibleItems) {
    return 3;
    }
    return value;
}

具体来说,你可能需要的是最后的if if语句,我们指定可见项的数量。它默认为1,这意味着当您浏览新图像时,会以一种生涩的方式出现。通过指定3,您可以保证最先前的项目,当前项目和下一个项目始终在内存中加载,因此在它们之间滚动始终是平滑的。如果这不能解决您的问题,请将数字3增加到任何有用的地方。

另外,不要忘记将iCarousel的代表设置为自己。

祝你好运。