【发布时间】:2012-05-17 15:23:11
【问题描述】:
我正在使用 ICarousel 制作我的电子相册。当您滑动相册时,ICarousel 的默认设置是它会移动一段距离。我需要的是只为一张图片滑动一次。我发现 ICarousel 不是基于 ScrollView 的,所以我不知道如何实现我的目的,有人知道吗?
【问题讨论】:
我正在使用 ICarousel 制作我的电子相册。当您滑动相册时,ICarousel 的默认设置是它会移动一段距离。我需要的是只为一张图片滑动一次。我发现 ICarousel 不是基于 ScrollView 的,所以我不知道如何实现我的目的,有人知道吗?
【问题讨论】:
使用最新版本的 iCarousel 更新答案:
iCarousel 现在通过设置支持单页滑动 pagingEnabled=YES。
【讨论】:
我建议关闭本机滚动并附加一个使用 scrollByNumberofItems 方法的 PanGestureRecognizer。
[iCarousel setScrollEnabled:NO];
然后在你的gestureRecognizer里面:
[iCarousel scrollByNumberOfItems:1 duration:0.25];
我自己试过了,效果很好。
【讨论】:
看来您必须使用由同一作者实现的另一个名为 SwipeView 的库。
问题是在这里找到的。 https://github.com/nicklockwood/iCarousel/issues/247
【讨论】:
我通过设置实现了 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;
}
}
【讨论】:
修改 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.
......
}
}
那解决了我的问题,希望能帮到你!
【讨论】: