Я использую ICarousel для создания своего электронного альбома. Когда вы перемещаете альбом, ICarousel по умолчанию устанавливает, что он перемещается на некоторое расстояние. Мне нужно слайд один раз только для одного изображения. Я обнаружил, что ICarousel не основан на ScrollView, поэтому я не могу понять, как достичь своей цели, знает ли кто-нибудь об этом?
Как заставить ICarousel скользить один раз для одного изображения
Ответы (5)
Я бы рекомендовал отключить встроенную прокрутку и подключить PanGestureRecognizer, использующий метод scrollByNumberofItems.
[iCarousel setScrollEnabled:NO];
Затем внутри вашегоgestRecognizer:
[iCarousel scrollByNumberOfItems:1 duration:0.25];
Я попробовал это сам, и это сработало отлично.
person
MobileVet
schedule
17.05.2012
Где вы пишете этот код? [Прокрутка iCarouselByNumberOfItems: 1 продолжительность: 0,25];
- person Luda; 24.05.2013
Где бы вы ни решили, что хотите, чтобы карусель прокручивалась. Для меня это было внутри PanGestureRecognizer. Когда жест был распознан, я запустил прокрутку карусели с помощью приведенной выше строки кода.
- person MobileVet; 03.06.2013
Обновленный ответ с более поздними версиями iCarousel:
iCarousel теперь поддерживает прокрутку одной страницы, установив pagingEnabled=YES.
person
Vincent NOCK
schedule
06.07.2015
Похоже, вам придется использовать другую библиотеку под названием SwipeView, реализованную тем же автором.
Проблема была найдена здесь. https://github.com/nicklockwood/iCarousel/issues/247
person
Nimit Pattanasri
schedule
04.12.2012
Я добился этого для типа iCarouselTypeCoverFlow, установив:
//In ViewController.m
self.carousel.pagingEnabled = YES;
//In iCarousel.m change for smooth animation
-(void)scrollByOffset:(CGFloat)offset duration:(NSTimeInterbal)duration{
if (duration > 0.0)
{
_decelerating = NO;
_scrolling = YES;
_startTime = CACurrentMediaTime();
_startOffset = _scrollOffset;
// _scrollDuration = duration;
// set constant duration instead
_scrollDuration = 1.0;
_endOffset = _startOffset + offset;
if (!_wrapEnabled)
{
_endOffset = [self clampedOffset:_endOffset];
}
[_delegate carouselWillBeginScrollingAnimation:self];
[self startAnimation];
}
else
{
self.scrollOffset += offset;
}
}
person
blaszku
schedule
09.09.2016
Изменить исходный код iCarousel Файл iCarousel.m может сделать это!
- (void)didPan:(UIPanGestureRecognizer *)panGesture {
......
case UIGestureRecognizerStateChanged: {
CGFloat translation = _vertical? [panGesture translationInView:self].y: [panGesture translationInView:self].x;
translation = translation * 0.35; // Add This line to change the really translation.
......
}
}
Это решает мою проблему, надеюсь помочь вам!
person
Beyond Chao
schedule
03.07.2017