pratikshabhisikar имеет право.
Вы обновляете только одну из своих меток, когда ваш contentOffset равен точно , кратному 150 (как целое).
(offsetY % 150)
возвращает true, только если offsetY
делится на 150 и не оставляет остатка.Поэтому, если вы выполняете слишком быструю прокрутку, это смещение может пропустить «сладкое пятно» (кратное 150), и вы не получите обновление.
try:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
int index = floor(scrollView.contentOffset.y / 150.0f);
for (int i = 0;i < 5; i++) {
UILabel *label = [labelArray objectAtIndex:i];
label.text = [stringArray objectAtIndex:index];
}
}
The 'Функция floor 'гарантирует, что вы получите округленную версию в виде целого числа после деления, поэтому в любом месте от 0 до 150 будет возвращаться 0 и т. д.
Вы также можете кэшировать последний загруженный индекс (так как вы будетеперезагрузка текста для любого количества прокрутки в настоящее время (т. е. введите цикл for только если index != mCurrentIndex
.