Расстояние между page внутри scrollView


#1

Доброго времени суток!

Сейчас есть:
scrollView с высотой экрана шириной экрана умноженной на кол-во элементов
3 контроллера

func scrollViewDidScroll(_ scrollView: UIScrollView) {
        
        let positionIndex = Int(round(scrollView.contentOffset.x / view.frame.width))
        
        guard positionIndex != prevPositionIndex else { return }
        
        guard
            positionIndex > 0,
            positionIndex < elements.count - 1
            else {
                prevPositionIndex = positionIndex
                return
            }
        
        let swipeTo = positionIndex - prevPositionIndex
        let isSwipeToRight = swipeTo == 1
        
        let nextElementIndex = positionIndex + (isSwipeToRight ? 1 : -1)
        
        let frame = view.frame
        let nextXPosition = frame.width * CGFloat(nextElementIndex)
        let nextFrame = CGRect(x: nextXPosition, y: frame.minY, width: frame.width, height: frame.height)
        
        let nextVC = controllers[nextElementIndex % 3]
        nextVC.configure(elements[nextElementIndex])
        nextVC.view.frame = nextFrame

        prevPositionIndex = positionIndex
        
    }

И переопределение фрейма одного из контороллеров, по сути просто paging view

Подскажите пожалуйста, как можно добавить расстояние между view, чтобы они не были слеплены


#2

Так а не проще использовать UICollectionView для этого. Там это все делается проще.


#3

Я думал о ней, просто по сути это отдельные экраны, в которых порядком логики, это адекватно на их основе делать ячейки!?

По сути да, можно просто view экрана растянуть на всю ячейку


#4

Если это у вас разные view со своей логикой, что вполне логично было бы выделить их как отдельные ViewController, тогда можно использовать PagingMenuController.


#5

Да нет, это будет лишнее, не нужно такое представление, это просто описание товара


#6

Тогда лучше UICollectionView делать


#7

Добрый вечер еще раз))

Сделала коллекцию, где у ячейки размер экрана, и включил isPagingEnabled,

Как в таком случае сделать, чтобы ячейка была четка слева по краю?


#8

нужно все промежутки у CollectionView выставить в 0


#9

Но тогда ведь опять не будет расстояния!
Или я туплю?!
Не у компьютера, не могу проветрить


#10

там это все выставляется
у самого CollectionView есть внутренние падинги и расстояние между view, выставляются по разному.


#11

вот 3 основных метода с которыми вам нужно поработать

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

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
    return 0
}

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
    return 0
}

#12

Да, отступы уже установлены в ноль, тут именно для отступа между ячейками нужно будет работать с scrollView методами скорее всего