2017-10-09 71 views
0

我需要UICollectionView细胞椭圆形,其中高度是固定的,但宽度是动态的,它有一个限制也,如果文本超过15分钟,则文本应滚动。任何可用于此的第三方选项或需要使用UICollectionView创建自己的选项。请指导。UICollectionViewCell动态的宽度和高度固定

enter image description here

下面是我想实现的图像。我想在开始之前知道我应该寻找第三方还是使用UICollectionView来创建自己的。我有很短的时间来完成这就是为什么要避免搜索要求在自己开始遵循哪个方向。请引导。

+1

你可以得到字符串的宽度,并根据你可以设置宽度的大小,所以你必须使用sizeforitem方法,你必须包括UIcollectionFlowlayoutdelegate –

+0

看看这个回购https://github.com/riteshhgupta/ TagCellLayout –

+0

@BhupatBheda这看起来很有用,但是我在swift 4上工作,它可能不支持它,因为它有1年的提交。 –

回答

1

您可以使用UICollectionViewFlowLayout和Auto Layout来实现此目的。

  1. 使用容器视图创建UICollectionViewCell。
  2. 引脚此容器查看电池的边缘与自动布局
  3. 添加一个UILabel到这个容器视图,其固定在容器视图的所有边缘(给它一个背景颜色从细胞背景区分)
  4. 在UICollectionViewCell子类中,您将要围绕容器视图的角落,例如self.containerView.layer.cornerRadius = self.containerView.height/2
  5. 在UICollectionViewFlowLayoutDelegate方法,estimatedSizeForItem的细胞返回一个近似大小(自动布局将计算出实际大小。)

要记住的重要一点是你的电池需要有足够的约束,以使汽车布局引擎可以根据内容计算实际的高度和宽度。

编辑:如果你想要一个固定的高度,确保你的标签只能有一条线。或者添加高度限制。

+0

实际上op是要求动态宽度而不是动态高度! – Lion

+0

为什么这个解决方案不能用于动态宽度...?我编辑的模糊程度较低,但解决方案相同。 – Tim

+0

你写过自动布局可以计算实际高度!这就是我为什么指出的原因!现在你编辑的答案很好! – Lion

0

最后,我发现,通过与许多定制的快捷4支持也的CocoaPods安装库TagListView