更改UIPageControl的当前页面

时间:2014-04-08 07:23:26

标签: ios objective-c uiscrollview uiimageview uipagecontrol

我有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:UIScrollViewUIImageView的数量可能会有所不同。上面我提到了最大值。

1 个答案:

答案 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);
        }
}

enter image description here

以上图片是我的观点。我有三个控件.. pageControl已添加到MainView中,而不是在UIScrollVIew中。