UICollectionView - 单元格不应在视图外滚动

时间:2018-05-21 11:11:45

标签: ios swift xcode uicollectionview

情况:

我将UITableViewController与在Storyboard中设计的静态表格单元格一起使用。在我的第一个UITableViewCell中,我实现了一个不错的UICollectionView

但是有一个问题:当我滚动它们时UICollectionViewCell移出框架。他们应该只在正确的位置停止。enter image description here

代码:

import UIKit

class HomeTableViewController: UITableViewController, UICollectionViewDelegate, UICollectionViewDataSource {

@IBOutlet weak var topSliderCollectionView: UICollectionView!

var topSliderElement = [TopSliderElement]()    

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
    return topSliderElement.count
    }

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "slider cell", for: indexPath) as! HomeSliderCollectionViewCell   
        let slider = topSliderElement[indexPath.row]

        cell.titleLbl.text = slider.tile
        cell.descriptionLBL.text = slider.description

        return cell
    }   
}

我试过这个: 这是一种可能的解决方案,但它不起作用,因为我没有使用普通的UIViewController

问题:如何控制单元格以使它们停在视图中的正确位置?

1 个答案:

答案 0 :(得分:2)

您必须将单元格宽度设置为与view.frame.width相同才能使其正常工作。如果单元格的两侧有任何间距(您可以这样做),则必须将它们一起添加,然后从宽度中减去。即,view.frame.width - 16。完成此操作后,您必须在isPagingEnabled中将UICollecitonView设置为true - 当您停止滚动时,这会将单元格锁定在屏幕中心。