我有UIScrollView
,其中我添加了另外20个UIScrollView
作为子视图。在20 UIScrollView
之后,我添加了4 UIImageView
作为他们的子视图。所有事情都以编程方式发生。现在我想对UIPageControl
使用UIImageView
,这会在滚动图片时更改其当前页面值。
UIScrollView
|
|_ _ _ ScrollView Sub1---- PageControl 1
| |
| |_ _ _ Image 1
| |_ _ _ Image 2
| |_ _ _ Image 3
| |_ _ _ Image 4
|
|_ _ _ ScrollView Sub2 ---- PageControl 2
| |
| |_ _ _ Image 1
| |_ _ _ Image 2
| |_ _ _ Image 3
| |_ _ _ Image 4
|_ _ _
|
|_ _ _
|
|_ _ _ ScrollView Sub20 ---- PageControl 20
| |_ _ _ Image 1
| |_ _ _ Image 2
| |_ _ _ Image 3
| |_ _ _ Image 4
|
现在我的问题是:
1)我是否必须以编程方式添加20 UIPageControl
或仅使用一个可以处理所有ScrollView的文件?
2)如何处理不同滚动视图的当前页面值?因为在滚动图像期间,我还可以滚动UIScrollView
。
PS:UIScrollView
和UIImageView
的数量可能会有所不同。上面我提到了最大值。
答案 0 :(得分:1)
您需要使用MainScrollView(包含所有UIScrollView子视图的高度)的高度进行游戏,并使用UIScrollView委托中的- (void)scrollViewDidScroll:(UIScrollView *)scrollView
方法。它的工作方式是获取MainScrollView contentOffset的当前y位置,并将其除以MainScrollView的高度。下面的代码可能会给你一些想法:(考虑到你有一个垂直的UIScrollView)
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if(scrollView == MAINS_SCROLLVIEW)
{
CGFloat pageHeight = MAIN_SCROLLVIEW.frame.size.height; // getting the height
int pageNo = round(formScrollView.contentOffset.y / pageHeight); // getting the page Number
pageControl.currentPage = pageNo; // Setting the page Number to pageControl
NSLog(@"%i", pageNo);
}
}
以上图片是我的观点。我有三个控件.. pageControl已添加到MainView中,而不是在UIScrollVIew中。