Представление коллекции не обрезается по краям при прокрутке и закрытии - PullRequest
0 голосов
/ 11 июля 2020

У меня есть UICollectionView, и моя проблема в том, что если я отклоняю контроллер представления, который содержит представление коллекции, в то время как прокрутка представления коллекции все еще выполняется, представление коллекции не обрезается по краю view, и я могу видеть ячейки, которые находятся за пределами представления, в то время как контроллер представления отклоняется.

Я использую схему потока представления коллекции, вот мой код:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
    let flow = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
    
    let height = collectionView.frame.height - flow.sectionInset.top - flow.sectionInset.bottom
    let size = CGSize(width: cellWidth, height: height)
    return size
}

Я также управляю процессом прокрутки с помощью следующего кода, поэтому прокрутка каждый раз останавливается в указанной точке:

func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {
  
    let width: CGFloat = cellWidth + cellOffset
    let xOffset = scrollView.contentOffset.x
    let page: Double = Double(xOffset / width)
    var pageInt: Int = Int(page.round(to: 0))
    
    if velocity != .zero {
        pageInt = velocity.x > 0 ? pageInt+1 : pageInt-1
    }
    
    let newXOffset = CGFloat(pageInt) * width
    let point = CGPoint(x: newXOffset, y: 0)
    targetContentOffset.pointee = point
}

1 Ответ

0 голосов
/ 11 июля 2020

Итак, я понял свою глупую ошибку почти сразу после того, как разместил вопрос. Я применил тень к слою представления моей коллекции и установил его masksToBounds на false. Установка masksToBounds на true решила эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...