Как вывести текущий вид iCarousel на первое место среди других представлений в iCarouselTypeWheel

Я хочу создать колесо, похожее на "http://www.asianpaints.com/royale" в iOS , до сих пор я использовал iCarousel тип: iCarouselTypeWheel. Это почти работает для меня, но основная проблема заключается в том, что центральный вид перекрывается следующими элементами. Пожалуйста, дайте мне знать, как исправить.

Заранее благодарю за любую помощь.


person anurag2000    schedule 25.02.2014    source источник


Ответы (2)


На самом деле вам нужно будет изменить значение преобразования z (которое возвращается) функции CATransform3DTranslate в методе transformForItemViewWithOffset. Это немного взломано.

Сделать это,

  • Откройте файл iCarousel.m
  • Ищите метод -(CATransform3D)transformForItemViewWithOffset:(CGFloat)offset
  • Внутри оператора switch case перейдите к iCarouselTypeWheel, а в части else вам нужно будет изменить строку

    return CATransform3DTranslate(transform, 0.0f, -radius, offset * 0.01f);
    

    to

    return CATransform3DTranslate(transform, 0.0f, -radius, 0.0f);
    

Сохраните файл и запустите проект, чтобы увидеть, даст ли это желаемый результат.

person GenieWanted    schedule 25.02.2014

Стандартный элемент колеса устанавливает «первый» элемент в самой левой или самой правой позиции, поэтому, если вы хотите, чтобы карусель начиналась сверху, вам нужно установить тип карусели на iCarouselTypeCustom и предоставить преобразование в carousel:itemTransformForOffset:baseTransform:, вы можете взять преобразование из источника iCarousel в качестве основы.

person sage444    schedule 25.02.2014
comment
На самом деле это правильный ответ. Не взламывайте библиотеку — используйте делегат, чтобы предоставить пользовательское преобразование, и скопируйте логику преобразования из стандартной реализации колеса. - person Nick Lockwood; 26.02.2014
comment
Да, это то, что я сделал ... с помощью iCarouselTypeCustom Type и реализовал логику. Спасибо Ник за отличную библиотеку. - person anurag2000; 03.03.2014