У меня есть UICollectionView
с одной строкой, и каждая ячейка имеет разные width
(в зависимости от определенных критериев). Each cell
имеет связанное с этим ассоциированное свойство float timeInSeconds
.Автоматическая прокрутка UICollectionView - iOS
Я хочу, чтобы автоматический прокручивать UICollectionView
по горизонтали таким образом, чтобы ячейка должна проходить в timeInSeconds
, связанной с этой ячейкой, соответственно.
Я попытался сделать это, используя NSTimer
и изменив contentOffset
, но не работая так, как хочу.
Код:
//this method is called which fires the `NSTimer`
- (void)configAutoscrollTimer {
w = self.messagesCollectionView.contentOffset.x;
autoScrollTimer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(onTimer) userInfo:nil repeats:YES];
}
- (void)onTimer {
[self autoScrollView];
}
- (void)autoScrollView {
NSIndexPath *lastIndexPath = [NSIndexPath indexPathForRow:_currentPlayIndex inSection:0];
UICollectionViewCell *cell = [_messagesCollectionView cellForItemAtIndexPath:lastIndexPath];
w += ([(NSNumber*)_messagesArray[lastIndexPath.row][@"duration"] floatValue])/cell.bounds.size.width;
CGPoint offsetPoint = CGPointMake(w, 0);
self.messagesCollectionView.contentOffset = offsetPoint;
}
Скриншот моего горизонтального обзора:
Я считаю, что проблема с X
вычисления смещения, относительно того, сколько шагов он должен двигаться по некоторой формуле. Моя формула не удалось :(
Пожалуйста, руководство о том, как достичь автопрокрутку в зависимости от времени, связанного с клеткой. Спасибо!
Попробуйте напечатать значение 'w' после его увеличения и посмотреть, соответственно. – Sebyddd
@Sebyddd Сделано, что уже, он действительно увеличивается, но прокрутка не соответствует времени «ячейки». Например, если связанная с этим ячейка имеет 4 секунды, ячейка должна пройти экран за 4 секунды. Но этого не происходит. прокрутка очень медленная. – hyd00
Что именно происходит при изменении смещения? Изменена ли позиция прокрутки или она остается в одном месте? – Sebyddd