iOS 7 中 UICollectionView 中不需要的垂直滚动
Posted
技术标签:
【中文标题】iOS 7 中 UICollectionView 中不需要的垂直滚动【英文标题】:Unwanted vertical scrolling in UICollectionView in iOS 7 【发布时间】:2014-02-26 04:55:36 【问题描述】:在我的项目中,我为UICollectionView
创建了一个自定义布局。在该布局中,无法垂直滚动,只能水平滚动。
如果UIViewController
是storyboard
中唯一的东西,则布局工作正常,即没有垂直滚动,只有水平滚动是可能的。
但如果您将UINavigationController
添加到storyboard
,则 iOS 7 中的布局会失败(在模拟器和设备中测试)。然后启用垂直滚动。您可以滚动一点,可能是 20 或 30 点。
但是对于 ios 6,无论有没有UINavigationController
,布局都可以完美运行。(在 iPhone 中测试)。
请帮忙。
谢谢,
解决方案
我找到了解决办法。
在 iOS 7 中,一些插图会自动添加到 UICollectionView。所以要修复它,将以下代码添加到 ViewController self.automaticallyAdjustsScrollViewInsets = NO;
我从https://***.com/a/18989755/3117930找到了解决方案
希望这对某人有帮助 谢谢,
【问题讨论】:
【参考方案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];
希望这会对你有所帮助。
【讨论】:
感谢您的快速响应。我按照你说的试过了。它没有解决我的问题。 欢迎您。这里有一些链接,请检查它们是否可以解决您的问题***.com/questions/20234915/…techotopia.com/index.php/…techotopia.com/index.php/…以上是关于iOS 7 中 UICollectionView 中不需要的垂直滚动的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7.1 在 UIPopover 中嵌套 UICollectionView
iOS 7 中 UICollectionView 中不需要的垂直滚动
使用 iOS 7 的 UICollectionView?边距空间
UIMenuController sharedMenuController - uicollectionview 的自定义菜单项不在 ios 7 中显示