更改 UIPageControl 的当前页面

Posted

技术标签:

【中文标题】更改 UIPageControl 的当前页面【英文标题】:Changing the current page of UIPageControl 【发布时间】:2014-04-08 07:23:25 【问题描述】:

我有一个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 还是只使用一个可以处理所有 ScrollViews 的?

2) 如何处理不同滚动视图的当前页面值?因为在滚动图片的过程中,我也可以滚动UIScrollView

PS:UIScrollViewUIImageView 的数量可能会有所不同。上面我提到了最大值。

【问题讨论】:

【参考方案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 中。

【讨论】:

感谢您的回复。我应该为每个 UIScrollView 使用不同的 UIPageControl 吗? 你只需要一个 UIPageControl 然后你可以设置 currentPage 给它。尝试使用上面的代码创建一个名为 pageControl.. 的 UIPageControl。不要忘记为您的 MAINSCROLLVIEW 设置一个委托 我将在哪个 UIScrollView 上添加 pageControl?当我滚动视图时,pagecontrol 也随之滚动,然后当前屏幕上没有 pageControl 显示。 您必须在您的视图上添加 pageControl(其中包含所有滚动视图)。如果您在 UIScrollView 中添加 pageControl,它将滚动。已添加图片供您参考。

以上是关于更改 UIPageControl 的当前页面的主要内容,如果未能解决你的问题,请参考以下文章

如何用每页不同的颜色更改 UIPageControl 中分页点的颜色

UIPageControl - 单击按钮更改页面

UIPageControl 指示点在页面更改时不会更改

UIPageControl 无法正确响应点击

UIPageController 与 UIPageControl 结合使用?

使用 UIPageControl 在按钮按下时发送数据和更改页面