[英]How Can I align the colectionViewCells to the left?
我有一個有時只有 1 個項目的 ac UIolectionView
。 如果是這種情況,則項目在中間對齊,請參見圖片:
但我想要的是該項目與左側對齊。
我在 StackOverflow 上找到了這個答案, UICollectioniew 中的 leftAlign 單元格 - StackOverFlow ,但是當我將接受的答案中給出的類添加到我的代碼庫時,並將其添加到viewControler
:
let leftAlignLayout = AlignedCollectionViewFlowLayout(horizontalAlignment: .left, verticalAlignment: .top)
gamesColectionView.collectionViewLayout = leftAlignLayout
它確實按照我想要的方式對齊,但它使細胞非常小(見圖)
我還嘗試從 Github 添加此內容: AlignedCollectionViewFlowLayout - GitHub但結果相同。
我嘗試通過將其添加到我的viewController
文件來修復該錯誤:
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: 130, height: 130)
}
但這沒有用。
有人對我如何解決這個問題有建議嗎? 我不知道我做錯了什么,或者我忘了做什么。
多謝! BSM
嘗試這個:
var layout: UICollectionViewFlowLayout = {
let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
layout.minimumLineSpacing = 8.0
layout.minimumInteritemSpacing = 8.0
let width = (UIScreen.main.bounds.size.width - 40.0) / 4
layout.estimatedItemSize = CGSize(width: width, height: 98.0)
return layout
}()
和:
override func viewDidLoad() {
super.viewDidLoad()
self.collectionView?.collectionViewLayout = layout
self.collectionView!.contentInset = UIEdgeInsets(top: 0, left: 0, bottom:0, right: 0)
}
您不需要使用 sizeForItemAt。 如果你想要更多,你可以看看我的項目。 用它的超級視圖檢查你的 imageView 的約束
您可以使用以下代碼管理您的單元格。 不要忘記添加UICollectionViewDelegateFlowLayout
func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {
// your code here
}
您無需執行任何特殊操作即可使collectionViewCells
左對齊。
如果constraints
正確, cells
將自動從左側開始渲染。
class VC: UIViewController, UICollectionViewDataSource, UICollectionViewDelegateFlowLayout {
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 1
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) as! CollectionViewCell
return cell
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: 130, height: 130)
}
}
只需根據storyboard
本身的要求將scrollDirection
設置為vertical
或horizontal
。
無需使用任何 3rd 方庫即可使其正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.