【问题标题】:Unwanted vertical scrolling in UICollectionView in iOS 7iOS 7 中 UICollectionView 中不需要的垂直滚动
【发布时间】:2014-02-26 04:55:36
【问题描述】:

在我的项目中,我为UICollectionView 创建了一个自定义布局。在该布局中,无法垂直滚动,只能水平滚动。

如果UIViewControllerstoryboard 中唯一的东西,则布局工作正常,即没有垂直滚动,只有水平滚动是可能的。

但如果您将UINavigationController 添加到storyboard,则 iOS 7 中的布局会失败(在模拟器和设备中测试)。然后启用垂直滚动。您可以滚动一点,可能是 20 或 30 点。

但是对于 iOS 6,无论有没有UINavigationController,布局都可以完美运行。(在 iPhone 中测试)。

请帮忙。

谢谢,

解决方案

我找到了解决办法。

在 iOS 7 中,一些插图会自动添加到 UICollectionView。所以要修复它,将以下代码添加到 ViewController self.automaticallyAdjustsScrollViewInsets = NO;

我从https://stackoverflow.com/a/18989755/3117930找到了解决方案

希望这对某人有帮助 谢谢,

【问题讨论】:

    标签: ios scroll uicollectionview


    【解决方案1】:

    据我所知,它会尝试将注意力集中在最接近过渡前视图布局中心的单元格上。但是,如果在视图转换前的中心没有碰巧有一个单元格,那么它仍然会尝试将单元格放在转换后的中心位置。如果您将 alwaysBounceVertical/Horizo​​ntal 设置为 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];
    }
    

    希望这会对你有所帮助。

    【讨论】:

    猜你喜欢
    • 2019-10-04
    • 2022-01-11
    • 2019-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-31
    • 2018-11-09
    相关资源
    最近更新 更多