• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - scrollToItemAtIndexPath 破坏 UICollectionViewCell 布局

[复制链接]
菜鸟教程小白 发表于 2022-12-13 09:56:01 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在创建一个水平滚动的分页 UICollectionView,其单元格与 Collection View 一样大,因此一次只显示一个单元格。我还想在 Collection View 首次出现时首先显示最后一个项目,以便从左侧显示其他项目,而不是从右侧显示下一个项目的默认值。

为此,我按照 this answer 的建议在 View Controller 的 viewDidLayoutSubviews 中调用 scrollToItemAtIndexPath: .如果我在 viewWillAppear 或 viewDidLoad 中调用 scrollToItemAtIndexPath,则 Collection View 根本不会滚动到最后一项。

但是,此调用破坏了我的 Collection View 单元格的布局。例如,如果我不调用 scrollToItemAtIndexPath:,则 Collection View (下方的白色区域)看起来像左边的——布局正确但显示了第一个项目。如果我调用 scrollToItemAtIndexPath:, Collection View 最初会显示最后一项,但布局会像右侧一样困惑(甚至不再显示日期)。

enter image description here

我做错了什么?

更多信息:

  • 我在 iOS 7 和 iOS 8 中都看到了这个错误。
  • 我在 Xcode 6.1 中使用尺寸类。

viewDidLayoutSubviews 的代码:

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];

    NSIndexPath *lastIndexPath = [NSIndexPath indexPathForItem:self.unit.readings.count - 1 inSection:0];
    [self.readingCollectionView scrollToItemAtIndexPath:lastIndexPath atScrollPosition:UICollectionViewScrollPositionLeft animated:NO];
}



Best Answer-推荐答案


每当我遇到这个问题并且我有一个恒定大小的单元格时,我都会通过手动设置 contentOffset 并忽略 collectionView 方法来解决它。

self.collectionView.contentOffset = (CGPoint){
  .x = self.collectionView.contentSize.width - cell.width,
  .y = 0,
};

关于ios - scrollToItemAtIndexPath 破坏 UICollectionViewCell 布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26947366/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap