我有一个 UICollectionView 用于模拟 iOS 7 中的新日历。此集合视图位于具有 selectedDate 属性的控制器内。每当设置 selectedDate 属性时,集合视图应滚动到集合视图中的日期。
日历控制器的 viewWillAppear 还确保所选日期是可见的,因为该控制器被缓存和重用。
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self.calendarView scrollToDate:[self selectedDate] animated:NO];
}
问题是日历控制器第一次显示滚动不起作用。集合视图的 contentOffset 未更新。
我目前的解决方法是安排滚动发生在下一个运行循环使用
dispatch_after(DISPATCH_TIME_NOW, dispatch_get_main_queue(), ^(void)
{
// Scroll to the date.
});
看起来当 UICollectionView 不在您无法滚动的窗口中时。将滚动安排在下一个运行循环中进行,以确保视图已添加到窗口并且可以正确滚动。
有没有其他人遇到过这个问题以及他们的解决方法?