创建 Trover 风格画廊 iOS Swift

Creating Trover Style Gallery iOS Swift

我正在尝试在我的 iOS swift 应用程序中创建一个画廊,它的风格类似于 Trover 所做的,所以基本上我想要一个图像数组,指定最大数量图像以适合一行,然后我想动态生成 UIImageViews,其帧大小由代码确定,以创建下面的拼贴效果。我知道这可以在 android 中使用 recyclerView 完成,但是我不确定在 iOS 中最好的方法是什么,我知道我可以使用 TableView、CollectionView 或 StackView我不确定最简单的方法是什么...我过去使用 CollectionViews 的方式是 CollectionViewCell 有一个静态大小,因此我不确定如何使它们适应这个目的。

根据给出的图片推测,我们可以假设每4个项目,布局是一样的。所以我们可以使用 UICollectionView 并且我们 可能 (请参阅答案末尾的注释)只需在 [=24] 中使用以下代码覆盖 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);

注:
代码没有测试(我写到这里,不知道能不能这样编译)
我明确地写了两个 switch case,但它显然可以在一个中使用,因为 modulo 2 和 modulo 4 可以是 "joined"。
我选择了 2/5 和 3/5 以适应宽度(但你可以清楚地设置你喜欢的比例)。