У меня есть 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
}