将UIPageControl添加到UIScrollView

use*_*282 3 objective-c uiscrollview uipagecontrol ios

我有一个包含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;
Run Code Online (Sandbox Code Playgroud)

我已将UIPageControl拖到我的xib文件中的scrollview上,但我不知道如何链接它们.我该怎么做呢?

Chr*_*ner 6

您不希望将其添加UIPageControl到滚动视图本身,因为您不希望它与内容一起滚动.

有了这个,请看一下UIScrollViewDelegate协议,特别scrollViewDidEndDecelerating:是当你的滚动视图停止移动时会被调用(更新你的好时机UIPageControl).

你的计算将会是......

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
   self.pageControl.currentPage = floorf(scrollView.contentOffSet.x/320);
}
Run Code Online (Sandbox Code Playgroud)

Re:我在一个视图控制器中有两个滚动视图,所以它指定我正在使用哪一个?

scrollView传入的实例可用于协商哪个滚动视图结束减速.如果delegate为两个滚动视图设置属性,当其中任何一个减速时,将调用此属性,因此您需要验证哪个实例结束减速.

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
   if (scrollView == self.helpScrollView) {
       self.pageControl.currentPage = floorf(scrollView.contentOffset.x/scrollView.frame.size.width);
   }
}
Run Code Online (Sandbox Code Playgroud)

  • 你确定它实际上是"上面"(z-index)的滚动视图吗?在大纲视图中,它应列在滚动视图下方(之后). (2认同)