gpt4 book ai didi

ios - 如果在 viewWillAppear 中调用 scrollToItemAtIndexPath,则 contentOffset 不会在 UICollectionView 上更新

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

我有一个 UICollectionView,用于模拟 iOS 7 中的新日历。此 Collection View 位于具有 selectedDate 属性的 Controller 内。每当设置 selectedDate 属性时, Collection View 应滚动到 Collection View 中的日期。

日历 Controller 的 viewWillAppear 还确保所选日期可见,因为该 Controller 已被缓存和重用。

-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];

[self.calendarView scrollToDate:[self selectedDate] animated:NO];
}

问题是第一次显示日历 Controller 时滚动不起作用。 Collection View 的 contentOffset 没有更新。

我目前的解决方法是安排滚动发生在下一个运行循环中使用

dispatch_after(DISPATCH_TIME_NOW, dispatch_get_main_queue(), ^(void)
{
// Scroll to the date.
});

看起来当 UICollectionView 不在窗口中时您无法滚动。将滚动安排在下一个运行循环中发生,确保 View 已添加到窗口并且可以正确滚动。

有没有其他人遇到过这个问题,他们的解决方法是什么?

最佳答案

您始终可以强制自动布局布局。

override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
self.view.layoutIfNeeded()
self.collectionView.scrollToItemAtIndexPath......
}

关于ios - 如果在 viewWillAppear 中调用 scrollToItemAtIndexPath,则 contentOffset 不会在 UICollectionView 上更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19121607/

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