Добавить UIPageControl в UIScrollView


У меня есть UIScrollView, содержащий 5 изображений. Я хочу добавить 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 на мой scrollview в моем файле xib,но я не знаю, как связать их. Как мне это сделать?

1 3

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