Câu trả lời mới, đã chỉnh sửa:
Thêm cái này vào viewDidLayoutSubviews
NHANH
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
let indexPath = IndexPath(item: 12, section: 0)
self.collectionView.scrollToItem(at: indexPath, at: [.centeredVertically, .centeredHorizontally], animated: true)
}
Thông thường, .centerVertically
là trường hợp
ObjC
-(void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:12 inSection:0];
[self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionCenteredVertically | UICollectionViewScrollPositionCenteredHorizontally animated:NO];
}
Câu trả lời cũ hoạt động cho iOS cũ hơn
Thêm cái này vào viewWillAppear
:
[self.view layoutIfNeeded];
[self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionCenteredVertically animated:NO];
initialScrollDone
cờ như LenK đã làm vì phương thức này sẽ được gọi nhiều lần và nếu bạn gọi scrollToItemAtIndexPath: nhiều lần nó dường như khiến bộ sưu tập không thể cuộn được (trình mô phỏng iOS iPhone 5 / iOS 8)