我试图在我的iOS swift应用程序中创建一个类似于Trover所做的样式的画廊,所以基本上我想要一个图像数组,指定最大数量的图像以适合一行,以及然后我想动态生成UIImageViews
,其帧大小由代码确定,以创建下面的拼贴效果。我知道这可以在android中使用recyclerView
来完成,但是我不知道iOS中最好的方法是什么,我知道我可以使用TableView,CollectionView或StackView但是我不知道是什么最简单的方法是......我过去使用CollectionViews
的方式是CollectionViewCell
的静态大小因此我不确定如何使它们适应这个目的。
答案 0 :(得分:1)
UICollectionView
而我们可能(请参阅答案末尾的注释)只需使用Objective-C中的以下代码覆盖collectionView:layout:sizeForItemAtIndexPath:
,但是逻辑在Swift中是相同的:
CGFloat wholeWidthAvailable = collectionView.frame.size-interspace; //Since we only show 2 item per line, there is only 1 interspace
CGFloat height;
switch (indexPath.row%2)
{
case 0:
height = 100;
break;
case 1:
height = 200;
break;
default:
break;
}
CGFloat width;
switch (indexPath.row%4)
{
case 0:
width = wholeWidthAvailable*2./5.;
break;
case 1:
width = wholeWidthAvailable*3./5.;
break;
case 2:
width = wholeWidthAvailable*3./5.;
break;
case 3:
width = wholeWidthAvailable*2./5.;
break;
default:
break;
}
return CGSizeMake(width, height);
注意:
代码没有经过测试(我在这里写了,我不知道它是否如此编译)
我明确地写了两个开关盒,但它显然可以在一个中使用,因为模2和模4可以加入"。
我已选择2/5和3/5来适应宽度(但你可以清楚地说出你喜欢的比例)。