viewWillAppear
Koleksiyon görünümü henüz düzenini bitirmediği için içeri kaydırmanın güvenilir bir şekilde çalışmayabileceğini fark ettim; yanlış öğeye kaydırabilirsiniz.
Ayrıca, kaydırmanın viewDidAppear
, kaydırılmamış görünümün anlık bir flaşının görünür olmasına neden olacağını buldum .
Ayrıca, her seferinde kaydırırsanız viewDidLayoutSubviews
, bazı koleksiyon düzenleri her kaydırdığınızda alt görünüm düzenine neden olacağından, kullanıcı el ile kaydırma yapamaz.
İşte bulduğum şey güvenilir bir şekilde çalışıyor:
Hedef C:
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
// If we haven't done the initial scroll, do it once.
if (!self.initialScrollDone) {
self.initialScrollDone = YES;
[self.collectionView scrollToItemAtIndexPath:self.myInitialIndexPath
atScrollPosition:UICollectionViewScrollPositionRight animated:NO];
}
}
Swift:
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
if (!self.initialScrollDone) {
self.initialScrollDone = true
self.testNameCollectionView.scrollToItem(at:selectedIndexPath, at: .centeredHorizontally, animated: true)
}
}
initialScrollDone
daha o CollectionView'ın unscrollable içerir hale görünüyor defadan (iOS simülatörü iPhone 8 5 / iOS): Bu yöntem birden fazla kez ve scrollToItemAtIndexPath ararsanız denilen olsun çünkü Lenk yaptığı gibi bayrak