滚动在CollectionView

时间:2018-03-16 09:11:18

标签: ios swift uicollectionview

我有一个UICollectionView,我在其中实现了添加单元格的方法。

private func addNewMessage() {
    let tuplForAdd = dataSource.newMessage()
    if tuplForAdd.needNewSection {
        collectionView.insertSections(dataSource.indexSet)
    } else {
        collectionView.insertItems(at: [tuplForAdd.indexPath])
    }
    collectionView.scrollToItem(at: tuplForAdd.indexPath, at: .top, animated: true)
}

如果你不添加任何其他东西,一切都会好的。 但是如果你设置contentInset,那么滚动就会在我contentInset中写的值开始工作。

collectionView.contentInset = UIEdgeInsetsMake(64,0,0,0)
collectionView.scrollIndicatorInsets = UIEdgeInsetsMake(64,0,0,0)

我使用xib文件创建的控制器。

---------------- // -----------------------------

部分解决问题后进行编辑。

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

而不是让64使用以下保证金,

var topMargin = headerHeight + 15

使用automaticAdjustsScrollViewInsets属性,

self.automaticallyAdjustsScrollViewInsets = false
self.collectionView.contentInset = UIEdgeInsets(top: topMargin, left: 0, bottom: 0, right: 0)

如果您只是想在集合视图之外提供保证金,那么您也可以尝试这样做,

如果您想在收藏视图周围提供保证金,请使用

UIEdgeInsetsMake ( CGFloat top,CGFloat left,CGFloat bottom,CGFloat right); 
  

Swift 3

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
    return UIEdgeInsetsMake(topMargin, 0, 0, 0)
}

这将解决您的问题..