如何在swift中计算uicollectionview的行数

时间:2017-07-25 10:02:08

标签: swift3 uicollectionview

我需要确定uicollectionview的高度。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/black"
    android:orientation="vertical"
    android:weightSum="1">

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#f00">

        <Button
            android:id="@+id/button"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:onClick="onClickDTB"
            android:text="Convert to Binary"
            android:textAlignment="center"
            android:textAllCaps="true"
            android:textSize="14sp"
            android:textStyle="bold|italic" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#0f0">

        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="98dp"
            android:layout_weight="0.01"
            android:fontFamily="serif-monospace"
            android:text="Calculator"
            android:textAlignment="textEnd"
            android:textColor="@android:color/white"
            android:textSize="35dp"
            android:textStyle="bold" />
    </LinearLayout>


    <LinearLayout


        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#f0f"
        android:weightSum="100"
        android:orientation="horizontal">

        <LinearLayout
            android:layout_width="0dp"
            android:layout_weight="20"
            android:layout_height="match_parent"
            android:background="#FFA500"
            android:orientation="vertical">

        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_weight="20"
            android:layout_height="match_parent"
            android:background="#000FFF"
            android:orientation="vertical">

        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="20"
            android:background="#8B0000"
            android:orientation="vertical">

        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_weight="20"
            android:layout_height="match_parent"
            android:background="#800080"
            android:orientation="vertical">

        </LinearLayout>

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="20"
            android:background="#2E8B57"
            android:orientation="vertical">

        </LinearLayout>


    </LinearLayout>
    </LinearLayout>

以上解决方案适用于我项目中的某些情况。在这种特定的情况下,我需要计算行数,然后用一个数字多次找到高度。

let layout = contactCollectionView.collectionViewLayout
let heightSize = String(Int(layout.collectionViewContentSize.height))

如何查找行数?

更新

看图像。 enter image description here

这是我的collectionView。每个单元格都有不同的宽度(因为它是字符串)。所以它有不同的行。此collectionView的宽度为 view.frame

的宽度

1 个答案:

答案 0 :(得分:2)

您可以比较collectionView的{​​{1}}是否大于之前的宽度(s),然后将rowCounts增加1。我假设您正在实施width方法,并且每个单元格您目前知道动态UICollectionViewDelegateFlowLayout。如果您不知道当时的宽度,您还可以计算考虑width以及每个单元格中的其他内容所需的width string

以下是如何计算UIfont https://stackoverflow.com/a/30450559/6106583

width的参考资料

如下所示

string