2017-10-09 210 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