Я искал, как сделать меню прокрутки с обертыванием (зацикливанием) UIScrollview. Я проверил этот вопрос, и пример работает, и, возможно, это хороший подход.
Но вместо того, чтобы показывать только одну страницу (изображение), мне нужно отображать 3 страницы и иметь возможность прокручивать одну страницу за раз.
Итак, как я могу установить размер страницы UIScrollView на 1/3 меньше, чем фрейм (я думаю, так это сработает) ??
Это достижимо ?? Если нет, пожалуйста, направьте меня в другое русло
Спасибо
Ответ 1 · рейтинг 6 · brant
Я считаю, что вы говорите о том, что часть предыдущей страницы и часть следующей страницы видны. Способ сделать это - установить рамку представления прокрутки так, как вы хотите (например, меньше экрана), а затем отключить обрезку подпредставлений для представления прокрутки. Так вы добьетесь желаемого эффекта.
Ответ 3 · рейтинг 1 · Frade
Через некоторое время мне снова нужно решить эту проблему.
Я нашел решение, которое сработало для меня.
Проверьте этот ответ:
- Измените размер scrollView на нужный размер страницы
- Установите свой
scroll.clipsToBounds = NO
Создайте подкласс UIView (например, HackClipView) и переопределите метод hitTest: withEvent:
-(UIView *) hitTest:(CGPoint) point withEvent:(UIEvent *)event
{
UIView* child = [super hitTest:point withEvent:event];
if (child == self && self.subviews.count > 0)
{
return self.subviews[0];
}
return child;
}
Установите HackClipView.clipsToBounds = YES
- Поместите свой scrollView в этот HackClipView (с желаемым общим размером прокрутки)
Дополнительные сведения см. В этом ответе.
Обновление: Как указано в ответе lucius, теперь вы можете реализовать протокол UIScollViewDelegate и использовать метод - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset. Поскольку targetContentOffset является указателем. Использование этого метода не гарантирует вам такой же результат для страниц прокрутки, поскольку пользователь может прокручивать сразу несколько страниц. Но установка descelerationRate на fast почти даст вам тот же результат.