2013-02-19 13 views
16

Sto provando a rallentare lo scorrimento in UICollectionView. Tutto funziona alla grande e la distanza tra le celle va bene, ma si muove troppo velocemente.Regolazione UICollectionView velocità di scorrimento/sensibilità

Come è possibile regolare la sensibilità o la velocità del rotolo?

[Edit] Ho dimenticato di detto che ho già provato:

self.collectionView.decelerationRate = UIScrollViewDecelerationRateFast; 

e

self.collectionView.decelerationRate = UIScrollViewDecelerationRateNormal; 

Con nessun cambiamento significativo in termini di velocità ...

+0

Eventuali aggiornamenti su questo? – Hemang

risposta

25

UICollectionView è una sottoclasse di UIScrollView , quindi puoi regolare decelerationRate nel controller della vista collezione viewDidLoad, in questo modo:

Objective-C:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    self.collectionView.decelerationRate = UIScrollViewDecelerationRateFast; 
}; 

Swift:

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.collectionView.decelerationRate = UIScrollViewDecelerationRateFast 
} 
+0

Già provato UIScrollViewDecelerationRateFast e UIScrollViewDecelerationRateNormal senza modifiche significative. Ci sono altre proprietà che posso usare? – MXV

+0

Non ne sono a conoscenza. L'ho appena testato in uno dei miei progetti e l'impostazione di 'decelerationRate' di un' UICollectionView' su 'UIScrollViewDecelerationRateFast' rallenta lo scrolling _significantly_. Sei sicuro che il tuo riferimento alla tua collezioneView sia corretto? Se stai creando i tuoi oggetti in IB, hai controllato che le tue prese siano state installate correttamente? – followben

+0

Sì, tutto è collegato come dovrebbe. Pensi che il layout possa avere qualcosa a che fare con esso? – MXV

3

Per chi cerca come farlo in SWIFT

self.collectionView.decelerationRate = UIScrollViewDecelerationRateFast 
+0

Con Swift ci dovrebbe essere un modo più sintetico per esprimere questo. – ThomasW

0

Per coloro che non si utilizza un UICollectionViewController, ero alla ricerca di alta e basso per un modo per farlo funzionare. Risulta che se si sottoclasse lo UICollectionView stesso e si imposta self.decelerationRate = UIScrollViewDecelerationRateFast nel sempre richiesto metodo init(coder aDecoder:), sei a posto.

Speculazione sulla causa di questo è che UICollectionView non piace regolare la velocità di decelerazione dopo che il layout è stato creato. Non posso esserne certo, e ho sprecato più di abbastanza tempo su questo. Pensavo solo che avrei postato la risposta.

SDK: iOS 9+ Xcode: 8.3.2 Swift: 3.1