当我进行无限水平滚动时,如何避免抖动?

时间:2018-02-14 23:09:58

标签: objective-c uiscrollview uicollectionview

平台:iOS 10+

我可以通过观看WWDC11来制作粗略的无限滚动循环。
但是我无法弄清楚算法来消除抽搐效果。
任何想法,将不胜感激。

这是集合视图,可以水平滚动:

enter image description here

这是我正在尝试创建无限水平滚动效果的UICollectionView(允许初始滚动触发它):

@implementation PhotoCollectionView

- (void)recenterIfNecessary {
    CGPoint currentOffset = self.contentOffset;
    CGFloat contentWidth = self.contentSize.width;
    CGFloat centerOffsetX = (contentWidth - self.bounds.size.width) / 2.0;
    CGFloat distanceFromCenter = fabs(currentOffset.x - centerOffsetX);

    if (contentWidth > 0 && (distanceFromCenter > (contentWidth / 2.5))) {
        self.contentOffset = CGPointMake(centerOffsetX, currentOffset.y);
        // Move content by the same amount so it appears to stay still.
        // Note: Need to determine correct algorithm.
        //       Ran out-of-time on this one.
    }
}

- (void)layoutSubviews {
    [super layoutSubviews];
    [self recenterIfNecessary];
}

@end

如何提供SMOOTH滚动与细胞补充混蛋?
...我想在Swift 4+以及Objective-C中使用它。

0 个答案:

没有答案