Search code examples
iphoneobjective-cioscarouselicarousel

iPhone - Carousel


I use open source, iCarousel in my application to bring the carousel control. The carousel type which I use is iCarouselTypeRotary and the images are arranged linearly in this type. But, I need the images to bring like the carousel in the attached images. What should I do to make my carousel little tilted to the top view as the style in the below images? Kindly help. Thanks in advance.

enter image description here enter image description here


Solution

  • You can implement 3D tilt manually:

    In iCarousel.m: 574

    return CATransform3DTranslate(transform, radius * sin(angle), 0.0f, radius * cos(angle) - radius);
    

    change to:

    float tilt = MAX_TILT_VALUE * cos(angle); // greater angle means greater vertical offset
    return CATransform3DTranslate(transform, radius * sin(angle), tilt, radius * cos(angle) - radius);
    

    To make the code clear and reusable, implement tilt offset as option (similar to iCarouselOptionArc).

    PS: If you want perspective scaling, you will need to add scale transform that depends on cos(angle) similarly to tilt.