Невозможно присвоить значение типа «CGPoint» типу «CGFloat» - PullRequest
0 голосов
/ 09 февраля 2019

Сначала я пытаюсь получить макет и вычисляю ширину ячейки, включая интервал. После этого я пытаюсь вычислить индекс текущего отображения элемента.всякий раз, когда я прекращаю прокручивать, но это дает мне ошибку при расчете.«Невозможно назначить значение типа« 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


}
}

1 Ответ

0 голосов
/ 09 февраля 2019

Посмотрите на эту строку своего кода:

var offSet = targetContentOffSet.pointee.x

Какой тип выводит Swift для offSet?Вы можете щелкнуть его в Xcode, чтобы выяснить это, но мы можем видеть, что это должен быть тип CGPoint.x, который равен CGFloat.

Из остальных строк вашей функции, я полагаю, выхотите, чтобы это был тип CGPoint, поэтому измените его на:

var offSet = targetContentOffset.pointee
...