Jawaban Baru yang Diedit:
Tambahkan ini viewDidLayoutSubviews
CEPAT
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let indexPath = IndexPath(item: 12, section: 0)
self.collectionView.scrollToItem(at: indexPath, at: [.centeredVertically, .centeredHorizontally], animated: true)
}
Biasanya, .centerVertically
demikianlah kasusnya
ObjC
-(void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:12 inSection:0];
[self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionCenteredVertically | UICollectionViewScrollPositionCenteredHorizontally animated:NO];
}
Jawaban lama berfungsi untuk iOS lama
Tambahkan ini di viewWillAppear
:
[self.view layoutIfNeeded];
[self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionCenteredVertically animated:NO];
initialScrollDone
bendera seperti yang telah dilakukan LenK karena metode ini akan dipanggil lebih dari sekali dan jika Anda memanggil scrollToItemAtIndexPath: lebih dari sekali tampaknya membuat collectionView tidak dapat digulung (simulator iOS iPhone 5 / iOS 8)