小编Hen*_*y95的帖子

防止在UICollectionView中"包装"项目

我需要一个UICollectionView在宽度和高度上显示可能大于可见框架的网格,同时保持行和列的完整性.默认情况下UICollectionViewFlowLayout允许部分在屏幕外滚动,但它会将部分包装在一个部分中,以便将它们全部保存在屏幕上,从而搞砸了我的网格.

认识到这UICollectionView是一个子类UIScrollView,我尝试在viewDidLoad中手动设置集合视图的内容大小属性:

self.collectionView.contentSize = CGSizeMake((columns * (cellWidth + itemSpacingX), (rows * (cellHeight + itemSpacingY));
Run Code Online (Sandbox Code Playgroud)

但这没有效果.问题:

  • 有没有一种简单的方法来实现这一点,而无需构建自定义布局?
  • 使用自定义布局并覆盖collectionViewContentSize方法会成功获取集合视图以停止包装项目并向两个方向滚动吗?
  • 如果我必须构建一个自定义布局 - 我将不得不投入一些时间来学习 - 我是子类UICollectionViewLayout,还是子类化UICollectionViewFlowLayout节省时间?

更新:我尝试将UICollectionView嵌入为UIScrollView的子视图.集合视图本身表现正常 - 行没有包装在滚动视图的边缘,告诉我它正在填充我设置的UIScrollView内容大小.但是滚动视图不会在水平方向上平移,即它只是垂直滚动,集合视图无论如何都会自动进行.再次陷入困境.响应者链是否存在问题?

uiscrollview ios contentsize uicollectionview uicollectionviewlayout

7
推荐指数
1
解决办法
3208
查看次数

移动后,集合视图单元格不会重新加载

我正在使用a UICollectionView来显示场上不同位置的球员.每个单元格都包含显示玩家姓名和位置名称的标签.视图中的位置由自定义布局确定,该布局从数据源读取位置信息...即,字段上的位置与数据源中的索引无关,如在流布局中.对于各种位置,单元格也有点不同......'cellForItemAtIndexPath'根据位置从各种重用标识符中进行选择.

我希望用户能够在位置上交换玩家.只要我更新集合视图数据源并调用,一切都可以正常工作[self.collectionView reloadData].但我想动画单元格的交换,以便用户可以看到更改.我正在使用此代码,其中inboundSourceIndex和outboundSourceIndex先前已设置为交换的项目:

[self.collectionView performBatchUpdates:^{
    [self.collectionView moveItemAtIndexPath:inboundOriginIndex toIndexPath:outboundOriginIndex];
    [self.collectionView moveItemAtIndexPath:outboundOriginIndex toIndexPath:inboundOriginIndex];
    } completion:nil];
}
[self assignmentsUpdate]; // This method updates the data source for the collection view
[self.collectionView.collectionViewLayout invalidateLayout];
[self.collectionView reloadData];
Run Code Online (Sandbox Code Playgroud)

插入批量更新后,我得到所需的单元格动画,它们之间相互交换,播放器名称标签显示正确,并且布局为单元格提供了正确的帧(可能会有所不同).但其他一切都很混乱:位置标签没有更新,并且单元格没有使用正确的重用标识符重新加载 - 就像collectionView没有真正调用一样cellForItemAtIndexPath.我已经尝试更改数据更新和reloadData的顺序,但无济于事.我可以看到移动的细胞可能暂时改变indexPaths,但的CollectionView怎么看待错误后,我打电话invalidateLayoutreloadData?是不是基于数据源从头开始构建视图?

batch-updates reloaddata ios uicollectionview uicollectionviewlayout

7
推荐指数
0
解决办法
876
查看次数

xCode不会列出storyboard或info.plist进行本地化

我正在尝试本地化iOS应用.根据所有教程,最初的步骤之一是将本地化添加到项目编辑器的信息窗格中.当我到达那里时,默认情况下不会检查"使用基础国际化".当我点击它时,窗口"选择文件和参考语言..."按预期出现,但它没有列出任何文件 - 即没有选择要本地化的文件.

该应用程序构建/运行正常.我的故事板名为"main.storyboard",位于项目的主文件夹中,因此我不确定为什么xCode无法识别该文件.

值得注意的是,该项目已经重新命名,并且在添加没有基础的语言之后,我已经经历了几次尝试本地化,以及稍后添加基础的想法.但看起来这让我偏离轨道,我不得不撤消这些尝试; 在此过程中,我手动删除了已创建的.lproj文件夹.

关于问题是什么的任何想法?

localization ios uistoryboard

2
推荐指数
1
解决办法
1214
查看次数