UICollection视图调整屏幕大小的单元格大小

ben*_*555 33 constraints objective-c ios uicollectionview uicollectionviewcell

目前我的收藏视图占据了我3.5英寸屏幕尺寸的大部分屏幕.收集视图从顶部开始是51像素,从屏幕底部开始是20像素.我正在使用单元格UIPageControl创建分页布局,每页一个单元格.当切换到4英寸大小时,使用约束我可以使集合视图扩展到新空间(保持从顶部51个像素和从底部20个),但单元格大小保持不变,所以现在有一堆细胞顶部和底部的空白空间.我尝试使用约束,但看起来你不能为细胞设置它们.如何扩大单元格大小以填充iPhone 5上的空白区域?

集合视图代码就是

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
              cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
MyCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
return cell;

}
Run Code Online (Sandbox Code Playgroud)

布局在IB中设置我希望在添加更多之前首先使布局工作

iPhone 5查看. 我想填补空白空间

iPhone 4查看

rde*_*mar 71

如果需要动态设置大小,可以使用UICollectionViewFlowLayoutmethod itemSize属性设置UICollectionViewCell大小,也可以使用delegate方法.collectionView:layout:sizeForItemAtIndexPath:UICollectionViewCells

  • @Sanne,itemSize设置单元格的默认大小,如果您希望所有单元格大小相同,则可以.如果需要为特定索引路径的项返回不同的大小,请使用委托方法. (7认同)
  • @rdelmar你说的两种方法的优点和缺点是什么? (2认同)

Waq*_*ikh 7

CollectionView layout Delegate that will help you to resize your Cell as you need.
Run Code Online (Sandbox Code Playgroud)
- (CGSize)collectionView:(UICollectionView *)collectionView 
                          layout:(UICollectionViewLayout*)collectionViewLayout 
          sizeForItemAtIndexPath:(NSIndexPath *)indexPath;
Run Code Online (Sandbox Code Playgroud)

  • 海报问:*"我如何扩大细胞大小以填补空白空间"*.他/她*不*要求输入功能名称.如果您要提供单行函数名称而不解释如何使用它,您应该将其添加为对原始问题的注释. (6认同)
  • 这是一个简单的代表,还需要什么解释?和问题:: UICollection视图调整屏幕大小的单元格大小.所以我认为这个答案有足够的澄清?亚历山大你告诉我怎么解释一下呢? (4认同)
  • 告诉我们你的代码是什么意思也不错! (2认同)
  • 与使用HeightForRow Delegate并返回CGFloat以获得所需高度相同的解释,在此场景中,您将返回您想要的CollectionViewCell的CGSize.清除?告诉我你是否面临任何问题:) (2认同)