如何在collectionViewLayout中获取CollectionViewCell?

时间:2018-02-06 10:06:59

标签: swift uicollectionview uicollectionviewlayout

下面是我的代码。

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell : UniversalNewChatUsersCell = collectionView.dequeueReusableCell(withReuseIdentifier: "UniversalNewChatUsersCell", for: indexPath) as! UniversalNewChatUsersCell

        cell.lblUsername.text = self.arrSelectedUsersToChat.object(at: indexPath.row) as? String

        cell.layoutSubviews()
        return cell
    }

我希望根据它的内容更改单元格宽度,以及我在下面使用的方法。

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: 150.0, height: 44.0)
    }

目前我传递静态宽度。 现在我想要的是我想要访问collectionViewLayout方法中的单元格,这样我就可以得到单元格标签,并且根据这个标签,我可以计算它的宽度。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以通过调用collectionview的cellForItem来获取单元格。在sizeForItemAt方法中编写代码

if let collectionViewCell = collectionView.cellForItem(at: indexPath) as? YourCollectionViewCell {
}

答案 1 :(得分:0)

在collectionViewLayout方法中执行以下操作:

if let myCell = collectionView.cellForItem(at: indexPath) as? UniversalNewChatUsersCell             
    print(myCell)
}