Ecco il mio codice di override - calcola solo dove snap:UIScrollView non sempre animare decelerazione quando si esegue l'override scrollViewWillEndDragging
- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
if(targetContentOffset->y < 400) {
targetContentOffset->y = 0;
return;
}
int baseCheck = 400;
while(baseCheck <= 10000) {
if(targetContentOffset->y > baseCheck && targetContentOffset->y < baseCheck + 800) {
targetContentOffset->y = (baseCheck + 340);
return;
}
baseCheck += 800;
}
targetContentOffset->y = 0;
}
Quando tengo il dito verso il basso per più di un secondo o due per trascinare lo ScrollView e poi alza il dito, di solito si anima al suo posto. Tuttavia, quando eseguo uno "sfogliamento" veloce, si anima raramente, ma si aggancia a targetContentOffset. Sto cercando di emulare il comportamento di paging predefinito (tranne il tentativo di eseguire lo snap alle posizioni personalizzate).
Qualche idea?
Ho provato questo con un UICollectionView orizzontale, e mentre ha funzionato, l'animazione risultante è stato agitato; Penso che ci fossero due animazioni in corso allo stesso tempo. Wrapping 'setContentOffset:' in 'dispatch_async' risolto. – JLundell
Hai mai fatto il modo 'perfetto'? – Lukasz