gpt4 book ai didi

ios - UICollectionView scrollToItemAtIndexPath

转载 作者:IT王子 更新时间:2023-10-29 08:00:09 26 4
gpt4 key购买 nike

我正在尝试滚动到 Collection View 中的特定项目,并且它似乎在大约 90% 的时间内正确发生。我基本上有一个 Collection View ,我通过自动布局更改其框架,然后我希望我的单元格是所有新框架的大小,所以我设置了一个新的大小。当我在 scrollToItemAtIndexPath 上放置一个断点时,似乎当它工作时项目大小已经生效,但它不起作用的时候,单元格仍然具有旧大小。如何确保 itemSize 在滚动之前已更改?

[weakSelf.view removeConstraints:@[weakSelf.verticalSpace, weakSelf.collectionViewBottomSpace, weakSelf.bottomLayoutTopCollectionView]];
[weakSelf.view addConstraints:@[weakSelf.collectionViewToTop, weakSelf.imageHeight, weakSelf.youLabelToTop]];
[UIView animateWithDuration:animated ? .5 : 0.0
animations:^{
[weakSelf.view layoutIfNeeded];
}
completion:^(BOOL finished) {
UICollectionViewFlowLayout * layout = (UICollectionViewFlowLayout *)self.currentUserCollectionView.collectionViewLayout;

layout.itemSize = weakSelf.currentUserCollectionView.frame.size;

[weakSelf.currentUserCollectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForRow:[self getSelectedIndex:selectItem] inSection:0]
atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally
animated:NO];
}];

最佳答案

确保 Collection View 在滚动之前首先布置了它的 subview 以及调整单元格的大小。我建议将滚动条移动到您确定所有布局都已完成的地方,例如:

- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
NSIndexPath *indexPath = // compute some index path

[self.collectionView scrollToItemAtIndexPath:indexPath
atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally
animated:YES];
}

关于ios - UICollectionView scrollToItemAtIndexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19816184/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com