Обнаружение того, какой UIView отображается в pagingEnabled UIScrollView - PullRequest
0 голосов
/ 26 июля 2011

Я использую код из этого урока , чтобы создать UIScrollView, который позволяет прокручивать страницы.Другими словами, пользователь может перетаскивать экран для переключения с одного UIView на другой.Код в основном выглядит следующим образом:

- (void)loadView {
[super loadView];
self.view.backgroundColor = [UIColor redColor];
UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
scroll.pagingEnabled = YES;
NSInteger numberOfViews = 3;
for (int i = 0; i < numberOfViews; i++) {
CGFloat yOrigin = i * self.view.frame.size.width;
UIView *awesomeView = [[UIView alloc] initWithFrame:CGRectMake(yOrigin, 0, self.view.frame.size.width, self.view.frame.size.height)];
awesomeView.backgroundColor = [UIColor colorWithRed:0.5/i green:0.5 blue:0.5 alpha:1];
[scroll addSubview:awesomeView];
[awesomeView release];
}
scroll.contentSize = CGSizeMake(self.view.frame.size.width * numberOfViews, self.view.frame.size.height);
[self.view addSubview:scroll];
[scroll release];
}

Мой вопрос: как я могу определить, на какой странице находится пользователь?Например, «1» для страницы 1, «2» для страницы 2 и т. Д.

Спасибо!

Ответы [ 3 ]

3 голосов
/ 26 июля 2011

Вы можете получить номер текущей страницы, используя смещение содержимого представления прокрутки и его ширину.

int currentPage = (scrollView.contentOffset.x / scrollView.frame.width) + 1;
NSLog(@"current page: %d", currentPage);

Следует учитывать смещение y, если прокрутка выполняется вертикально.

1 голос
/ 26 июля 2011

На самом деле, еще лучше использовать int currentPage = (scrollView.contentOffset.x / scrollView.frame.width) + 1.5;

Это дополнительное значение .5 означает, что смена страницы происходит, когда страницы располагаются посередине, а не округляются влево.

1 голос
/ 26 июля 2011

Если вы хотите знать, на какой странице находится пользователь во время прокрутки, вы должны добавить свой объект как объект Delegate (UIScrollViewDelegate), затем вы можете использовать вызов

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

и рассчитать страницу как в emptystacksответ.

кстати.вычисление с плавающей точкой, если вам нужно знать, когда именно страница полностью прокручивается, вы должны использовать float.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...