Управление прокруткой только одного элемента в ScrollView
Итак, у меня есть ScrollView, на котором есть карточки. ScrollView должен быть включен подкачки.
Цель состоит в том, чтобы пользователь мог иметь возможность прокручивать его, даже если у него есть только одна карта. Поскольку у меня рамка ScrollView точно такой же ширины и высоты, что и изображение карты, я решил увеличить ширину ScrollView.contentSize и добавить к ней одну точку.
Оказывается, работает нормально, но немного глючит - когда я перетаскиваю карту влево, а затем снова ее беру, она немного сдвигается вправо (я думаю, для значения этой точки). Если я увеличиваю contentSize, сдвиг тоже увеличивается (например, если размер контента увеличивается на десять, значение сдвига тоже составляет десять пунктов). Это действительно сильно меня раздражает, и я хочу от него избавиться.
Любой совет, как это сделать? Помощь очень ценится.
UPD: я попытался вручную перецентрировать карту в scrollViewDidEndDecelerating, но это не помогло. На данный момент я предполагаю, что проблему можно решить, установив смещение содержимого на правильное значение (потому что теперь оно (0,0)), но я не могу понять, как это сделать.
UPD2: Вот код, который я сейчас использую:
calendarScrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 334, 372)];
//The cards themselves are 334 points wide too
calendarScrollView.clipsToBounds = NO;
calendarScrollView.pagingEnabled = YES;
calendarScrollView.bounces = YES;
calendarScrollView.showsHorizontalScrollIndicator = NO;
calendarScrollView.delegate = self;
//This part is used in the cycle of creating the cards
for (...) {
...
if (onlyOneCard) {
calendarScrollView.contentSize = CGSizeMake(335, 372);
onlyOneCard = 0;
} else {
calendarScrollView.contentSize = CGSizeMake(334+offsetInScrollView, 372); //offsetInScrollView is increased by 334 by every end of the iteration of the cycle
}
...
}
1 ответ
Вы можете установить свойство bounces в scrollview на TRUE.
Затем он всегда будет приходить в норму, если вы вышли за пределы вида прокрутки.:)