更改 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:UIScrollView
和 UIImageView
的数量可能会有所不同。上面我提到了最大值。
【问题讨论】:
【参考方案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 中分页点的颜色