创建Trover样式库iOS Swift

时间:2016-06-09 11:57:25

标签: ios swift uitableview uicollectionview uistackview

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

enter image description here

1 个答案:

答案 0 :(得分:1)

从给出的图像推测,我们可以假设每4个项目,布局是相同的。所以我们可以使用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来适应宽度(但你可以清楚地说出你喜欢的比例)。