将 UIPageControl 添加到 UIScrollView
Posted
技术标签:
【中文标题】将 UIPageControl 添加到 UIScrollView【英文标题】:Add UIPageControl to UIScrollView 【发布时间】:2013-12-10 20:36:36 【问题描述】:我有一个包含 5 张图片的 UIScrollView。我想在滚动视图的底部添加一个 UIPageControl,以便用户可以看到他们所在的页面。
这是我的滚动视图代码:
self.helpScrollView.contentSize = CGSizeMake(320 * 5, 436);
UIImageView *image1 = [[UIImageView alloc] initWithFrame:CGRectMake(320 * 0, 0, 320, 436)];
image1.image = [UIImage imageNamed:[NSString stringWithFormat:
@"Guide Page One.png"]];
[self.helpScrollView addSubview:image1];
UIImageView *image2 = [[UIImageView alloc] initWithFrame:CGRectMake(320 * 1, 0, 320, 436)];
image2.image = [UIImage imageNamed:[NSString stringWithFormat:
@"Guide Page Two.png"]];
[self.helpScrollView addSubview:image2];
UIImageView *image3 = [[UIImageView alloc] initWithFrame:CGRectMake(320 * 2, 0, 320, 436)];
image3.image = [UIImage imageNamed:[NSString stringWithFormat:
@"Guide Page Three.png"]];
[self.helpScrollView addSubview:image3];
UIImageView *image4 = [[UIImageView alloc] initWithFrame:CGRectMake(320 * 3, 0, 320, 436)];
image4.image = [UIImage imageNamed:[NSString stringWithFormat:
@"Guide Page Four.png"]];
[self.helpScrollView addSubview:image4];
UIImageView *image5 = [[UIImageView alloc] initWithFrame:CGRectMake(320 * 4, 0, 320, 436)];
image5.image = [UIImage imageNamed:[NSString stringWithFormat:
@"Guide Page Five.png"]];
[self.helpScrollView addSubview:image5];
self.helpScrollView.pagingEnabled = true;
self.helpScrollView.showsHorizontalScrollIndicator = NO;
我已将 UIPageControl 拖到我的 xib 文件中的滚动视图上,但我不知道如何链接它们。我该怎么做?
【问题讨论】:
【参考方案1】:您不想将UIPageControl
添加到滚动视图本身,因为您不希望它随内容滚动。
话虽如此,请看一下UIScrollViewDelegate
协议,特别是scrollViewDidEndDecelerating:
,它将在您的滚动视图停止移动时调用(这是更新您的UIPageControl
的好时机)。
你的计算会是这样的......
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
self.pageControl.currentPage = floorf(scrollView.contentOffSet.x/320);
Re:我在一个视图控制器中有两个滚动视图,那么这是否指定了我使用的是哪一个?
传入的scrollView
实例可用于协商哪个滚动视图确实结束了减速。如果您为两个滚动视图设置了delegate
属性,则当其中任何一个结束减速时都会调用此属性,因此您需要验证哪个实例结束减速。
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
if (scrollView == self.helpScrollView)
self.pageControl.currentPage = floorf(scrollView.contentOffset.x/scrollView.frame.size.width);
【讨论】:
我在 scrollViewDidScroll 中更新我的页面控件以获得响应更快的页面控件,但任何一个都可以工作(我的只是需要更多的处理能力)。 是的,你也可以在那里做。 我在一个视图控制器中有两个滚动视图,那么这是否指定了我使用的是哪一个? 好像方法被调用了,但是看不到我的UIPageControl? 你确定它实际上是在滚动视图的“上方”(z-index)吗?在大纲视图中,它应该列在您的滚动视图下方(之后)。以上是关于将 UIPageControl 添加到 UIScrollView的主要内容,如果未能解决你的问题,请参考以下文章
排队UIButton的CenterYAnchor到UIPageControl Swift
在 iOS 中为 UIPageControl 添加约束时 UIScrollView 不滚动
如何在全屏 ChildViewController 上显示 UIPageControl?