iPhone UIScrollView, замедление прокрутки - PullRequest
4 голосов
/ 15 апреля 2010

Как добавить дополнительное перетаскивание в физику UIScrollView. Он прокручивается слишком быстро для того, что я делаю. (Я не хочу вообще отключать, мне все еще нравится эффект резиновой ленты, когда вы добираетесь до конца или начала представления.) Есть ли способ замедлить его?

Ответы [ 4 ]

19 голосов
/ 24 апреля 2010

На самом деле, после прочтения документации я обнаружил свойство для UIScrollView, которое замедляет прокрутку, поэтому Apple делает его доступным для всех, кто ищет это:

scrollView.decelerationRate = UIScrollViewDecelerationRateFast;

Несмотря на то, что он говорит быстро, он ускоряет замедление, что в действительности замедляет прокрутку. Это было именно то, что мне было нужно. И не беспокойтесь о патентах. :)

3 голосов
/ 17 мая 2010

На самом деле вы можете создать блочную анимацию с ScrollToRowAtIndexPath: ... с анимированным набором NO. Таким образом, блочная анимация будет анимировать подстилающие переменные вручную, используя выбранное время.

1 голос
/ 04 марта 2014

Поскольку UICollectionView является подклассом UIScrollView Вы можете использовать метод делегата с прокруткой.

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
    targetContentOffset->x = (targetContentOffset->x - scrollView.contentOffset.x) / 6 + scrollView.contentOffset.x;
    targetContentOffset->y = (targetContentOffset->y - scrollView.contentOffset.y) / 6 + scrollView.contentOffset.y;   
}
0 голосов
/ 15 апреля 2010

Это просто невозможно сейчас. Возможно, Apple однажды расширит API, чтобы разрешить его, но до этого дня вы застряли со скоростью по умолчанию.

Единственным другим вариантом будет ваша собственная реализация прокрутки. Это не тривиально, если вам нужна вся приятная полировка, такая как эффект резиновой ленты и способ, которым прокрутка будет блокироваться горизонтально или вертикально. Не говоря уже о нажатии на прокрутку.

Кроме того, у Apple есть патент на некоторые из этих режимов прокрутки, поэтому написание собственного может даже быть опасным. Источник: «Патент Apple на сенсорный экран» .

вычислительное устройство, содержащее: дисплей с сенсорным экраном; один или несколько процессоров; объем памяти; и одну или несколько программ, в которых одна или несколько программ хранятся в памяти и конфигурируются для выполнения одним или несколькими процессорами, причем одна или несколько программ включают в себя: инструкции по обнаружению одного или нескольких контактов пальца с сенсорным дисплеем; инструкции по применению одной или нескольких эвристик к одному или нескольким контактам пальцев для определения команды для устройства; и инструкции для обработки команды; при этом одна или несколько эвристик содержат: эвристику вертикальной прокрутки экрана для определения того, что один или несколько контактов пальца соответствуют одномерной команде вертикальной прокрутки экрана, а не двумерной команде трансляции экрана на основе начального угла движение пальцем касания относительно сенсорного дисплея; эвристика двумерного перевода экрана для определения того, что один или несколько контактов пальца соответствуют команде двумерного перевода экрана, а не команде одномерной вертикальной прокрутки экрана на основе угла начального перемещения контакта пальца относительно сенсорный дисплей ; и эвристический анализ следующего элемента для определения того, что один или более контактов пальцев соответствуют команде перехода от отображения соответствующего элемента в наборе элементов к отображению следующего элемента в наборе элементов.

Но, конечно, я не юрист.

...