首先,我想获得的布局和计算单元格的宽度包括我试图计算的当前显示的Item.The最终的结果,我想了滚动计算和结束下药每当我停止索引spacing.After滚动但它给我的计算错误。 “无法分配型‘CGPoint’的值键入‘CGFloat的’”不知道如何解决这个问题。需要帮助
这里是功能代码功能
extension HomeViewController : UIScrollViewDelegate {
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint,targetContentOffset targetContentOffSet: UnsafeMutablePointer<CGPoint>) {
let layOut = self.collectionView?.collectionViewLayout as! UICollectionViewFlowLayout
let cellWidthIncludingSpacing = layOut.itemSize.width + layOut.minimumLineSpacing
var offSet = targetContentOffSet.pointee.x
let index = (offSet.x + scrollView.contentInset.left) / cellWidthIncludingSpacing //error Value of type 'CGFloat' has no member 'x'
let roundedIndex = round(visibleWidth)
offSet = CGPoint(x: roundedIndex * cellWidthIncludingSpacing - scrollView.contentInset.left,y: -scrollView.contentInset.top) //"Cannot assign value of type 'CGPoint' to type 'CGFloat'"
targetContentOffSet.pointee = offSet
}
}
看这行代码的:
var offSet = targetContentOffSet.pointee.x
不斯威夫特推导出offSet
什么类型的?在Xcode中,您可以选择单击它找出来,但是我们可以看到,它必须是CGPoint.x
的类型,这是CGFloat
。
从你的函数的其余行,我猜你希望它是类型CGPoint
,所以改成这样:
var offSet = targetContentOffset.pointee