我必须在UICollectionView
的一行中显示三个组件我编写了以下代码来操作flowlayout
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewFlowLayout *flowLayout = (UICollectionViewFlowLayout *)collectionView.collectionViewLayout;
CGSize size = flowLayout.itemSize;
size.width = (Get_Bounds.width-40)/3;
size.height = 135;
return size;
}
这适用于所有iOS
设备,但在iPhone 6 Plus
上效果不佳,只能在此设备上呈现两个组件。
答案 0 :(得分:0)
你试试那段代码
let height = img.size.height
let width = img.size.width
let cellHeight = collectionView.frame.size.width/3 * height / width
return CGSize(width: collectionView.frame.size.width/3, height: cellHeight)
获取设备尺寸:
func iPhoneScreenSizes(){
let bounds = UIScreen.mainScreen().bounds
let height = bounds.size.height
switch height {
case 480.0:
print("iPhone 3,4")
case 568.0:
print("iPhone 5")
case 667.0:
print("iPhone 6")
case 736.0:
print("iPhone 6+")
default:
print("not an iPhone")
}
}
您需要创建约束插座并将其管理为与设备相关的
答案 1 :(得分:0)
在 sizeForItemAtIndexPath 方法中,您需要的是给出 collectionViewCell项的大小。
因此,使用此算法,我们将集合视图单元格维度除以3并减去15(每个元素为5),相反,高度相反。
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
return CGSize(width: (self.view.frame.size.width/3)-15, height: (self.view.frame.size.width/3)+15)
}