我正在使用此处的DMCircularScrollView库:https://github.com/malcommac/DMCircularScrollView
图书馆所完成的是一个无限的"滚动视图循环回到开头。
我有2个DMCircularScrollViews,每个都有3个项目。但是,每个项目的宽度是不同的。在第一个中,它们都是scrollViewWidth / 2,在第二个中它们等于滚动视图的宽度。如何通过滚动第一个滚动视图来控制第二个滚动视图?即:我移动第一个滚动视图以选择第二个项目,当我移动第一个时,如何自动使第二个滚动视图动画化?
在阅读关于链接到常规UIScrollViews的其他帖子后,我尝试实现委托方法scrollViewDidScroll
并设置第二个滚动视图的内容偏移量,但该方法在这种情况下不起作用。
答案 0 :(得分:0)
我明白了!我实现了以下方法:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
NSLog(@"Test: %f", testScrollView.scrollView.contentOffset.x);
if(scrollView == threePageScrollView.scrollView) {
//[testScrollView relayoutPageItems:NSUIntegerMax];
[testScrollView reloadData];
NSLog(@"Third: %f", threePageScrollView.scrollView.contentOffset.x);
[testScrollView.scrollView setContentOffset:CGPointMake(threePageScrollView.scrollView.contentOffset.x*2, threePageScrollView.scrollView.contentOffset.y) animated:NO];
[testScrollView reloadInputViews];
}
}
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)sv {
[testScrollView relayoutPageItems:NSUIntegerMax];
if(sv == threePageScrollView.scrollView) {
[testScrollView reloadData];
NSLog(@"Third: %f", threePageScrollView.scrollView.contentOffset.x);
[testScrollView.scrollView setContentOffset:CGPointMake(threePageScrollView.scrollView.contentOffset.x*2, threePageScrollView.scrollView.contentOffset.y) animated:NO];
[testScrollView reloadInputViews];
}
//[self delegateSelector:@selector(scrollViewDidEndScrollingAnimation:) toDelegateWithArgument:sv];
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)sv
{
[testScrollView relayoutPageItems:NSUIntegerMax];
//[self delegateSelector:@selector(scrollViewDidEndDecelerating:) toDelegateWithArgument:sv];
testScrollView.currentPageIndex = threePageScrollView.currentPageIndex;
}
threePageScrollView
是我滚动的那个,而testScrollView
是通过代码动画的那个。