Добавить 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 ответ:
Вы не хотите добавлять
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); } }