我遇到了一个问题,我一直在努力解决这个问题,我有一个无限/循环的UIScrollview /标题(下图中的A部分),我想要与UIViewController同步(部分) B)。当页眉滚动时,我想计算它滚动的百分比并将其应用到下级控制器。
我已经知道如何做到这一点,但问题是为了使scrollview无限,我使用了Apple街道卷轴示例。由于我在尝试计算滚动的百分比时使用了contentOffset,当调用下面的方法(recenterIfNecessary)时,会导致内容偏移量跳跃并弄乱计算(即它将计算50%然后跳转调用方法时返回10%或其他值。
我已经在SO上做了很多搜索,看看是否有其他人有类似的问题但我找不到它,有关于如何实现无限/循环行为的帖子(我已经工作了) )但是,我无法找到任何与我的问题有关的内容。我还检查了在Cocoa Controls上创建的控件,我也找不到这样的控件。基本上我想要实现的是Windows Pivot Control:https://www.youtube.com/watch?v=gdUb5kYUXOQ
- (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 (distanceFromCenter > (contentWidth / 4.0)) {
self.contentOffset = CGPointMake(centerOffsetX, currentOffset.y);
for (UIView *label in self.visibleLabelTitles) {
CGPoint center = [self.labelContainerView convertPoint:label.center toView:self];
center.x += (centerOffsetX - currentOffset.x);
label.center = [self convertPoint:center toView:self.labelContainerView];
}
}
}