在我的项目中,我为UICollectionView
创建了自定义布局。在该布局中,不可能进行垂直滚动,只能进行水平滚动。
如果UIViewController
中唯一storyboard
,布局工作正常,即没有垂直滚动,只能进行水平滚动。
但是,如果您将UINavigationController
添加到storyboard
,则 iOS 7 中的布局会失败(在模拟器和设备中测试)。然后垂直滚动启用。你可以滚动一点,可能是20或30点。
但对于iOS 6,布局在使用和不使用UINavigationController
时都能正常工作。(在iPhone中测试过)。
请帮忙。
谢谢,
解
我找到了解决方案。
在iOS 7中,一些插件自动添加到UICollectionView。因此,要修复它,请将以下代码添加到ViewController self.automaticallyAdjustsScrollViewInsets = NO;
我找到了来自https://stackoverflow.com/a/18989755/3117930
的解决方案希望这对某人有帮助 谢谢,
答案 0 :(得分:1)
我可以告诉它试图关注最靠近转换前视图布局中心的单元格。但是,如果在转换前的视图中心没有碰巧出现一个单元格,那么它仍然会尝试将单元格转换为转移后的中心位置。如果将alwaysBounceVertical / Horizontal设置为YES,使用单个单元格加载视图,然后执行布局转换,则非常清楚。
通过在触发布局更新后明确告知集合关注特定单元格(在此示例中为第一个单元格可见单元格),我能够解决这个问题。
[self.collectionView setCollectionViewLayout:[self generateNextLayout] animated:YES];
// scroll to the first visible cell
if ( 0 < self.collectionView.indexPathsForVisibleItems.count )
{
NSIndexPath *firstVisibleIdx = [[self.collectionView indexPathsForVisibleItems] objectAtIndex:0];
[self.collectionView scrollToItemAtIndexPath:firstVisibleIdx atScrollPosition:UICollectionViewScrollPositionCenteredVertically animated:YES];
}
希望这会对你有帮助。