使用情节提要在 CollectionView 中仅显示两列,多行 [英] Display just two columns, with multiple rows in a CollectionView using storyboard
问题描述
我只想连续显示两个单元格,不管 iPhone 的屏幕尺寸是多少.喜欢,
I want to display only two cells in a row, no matter what the iPhone screen size is. Like,
我的故事板包含一个 UICollectionView
,由约束连接.
My storyboard contains a UICollectionView
,connected by constraints.
UICollectionView
的情节提要设置是,
现在,当我在 6、5 秒或更短的时间内运行它时,只有一个单元格出现在一行中.我使用的代码是,
Now, when I run this in 6, 5s or below, only one cell appears in a row. The code I'd used is,
- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{
return [categoryImages count];
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
homePageCells *cell = (homePageCells *)[collectionView dequeueReusableCellWithReuseIdentifier:@"cells" forIndexPath:indexPath];
cell.categoryName.text = [categoryNames objectAtIndex:indexPath.row];
return cell;
}
我尝试使用代码以编程方式检测屏幕大小并分配适当的单元格大小,
I tried detecting the screen size and assigning appropriate cell size programmatically using the code,
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
CGSize sizes;
CGSize result = [[UIScreen mainScreen] bounds].size;
NSLog(@"%f",result.height);
if(result.height == 480)
{
//Load 3.5 inch xib
sizes =CGSizeMake(170.f, 170.f);
NSLog(@"3gs");
}
else if(result.height == 568)
{
//Load 4 inch xib
sizes =CGSizeMake(130.f, 130.f);
NSLog(@"5s");
}
else if(result.height == 667.000000)
{
//Load 4.7 inch xib
sizes =CGSizeMake(160.f, 160.f);
NSLog(@"6");
}
else
{
NSLog(@"else");
sizes =CGSizeMake(170.f, 165.f);
}
return sizes;
}
但我也知道这不是正确的方法,所以请给我一个正确的处理方法.
But I also know that this isn't the right way, so please give me a right way to handle this.
推荐答案
你不需要检查设备大小,因为我们可以使用 collectionView
宽度来计算单元格的宽度.使用单元格宽度,您可以根据需要计算高度.
You need not check the device size because we can use the collectionView
width to calculate the width of the cell. Using the cell width you can calculate the height as per your need.
还有一件事:你需要使用 UICollectionViewDelegateFlowLayout
&确认代表 &下面实现方法
One more thing: You need to use UICollectionViewDelegateFlowLayout
& confirm the delegate & implement method below
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
let padding: CGFloat = 50
let collectionViewSize = collectionView.frame.size.width - padding
return CGSizeMake(collectionViewSize/2, collectionViewSize/2)
}
更新:Swift 4.0
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
let padding: CGFloat = 50
let collectionViewSize = collectionView.frame.size.width - padding
return CGSize(width: collectionViewSize/2, height: collectionViewSize/2)
}
注意:我已经回答了考虑到单元格是正方形大小的问题
Note: I have answered the question considering the cells are square sized
补充信息:请确保您没有估计大小 https://i.stack.imgur.com/B9kmU.png
Addition Information: Please make sure you make estimated size none https://i.stack.imgur.com/B9kmU.png
这篇关于使用情节提要在 CollectionView 中仅显示两列,多行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!