Как мне реализовать тайлинг UIScrollView с включенной подкачкой страниц? - PullRequest
0 голосов
/ 17 апреля 2019

Я пытаюсь создать бесконечный прокручиваемый пейджинг UIScrollView Я следую Расширенным методам UIScrollView видео из WWDC 2010, но я не уверен, как создать лист для пейджинга UIScrollView , Я использовал этот учебник для руководства Бесконечный пейджинг вместе с ответом на Stack Exchange . Возможно ли создать такой эффект в пейджинге UIScrollView или мозаика в основном используется только в среде с непрерывной прокруткой. Спасибо за вашу помощь.

1 Ответ

1 голос
/ 17 апреля 2019

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

import UIKit

class MainVC: UIViewController, UIScrollViewDelegate {

@IBOutlet var scrollView: UIScrollView!

var currentView: UIView?
var nextView: UIView?
var previousView: UIView?

override func viewDidLoad() {
    super.viewDidLoad()
    scrollView.isPagingEnabled = true
    scrollView.delegate = self
    generateViews()
}

func generateViews() {
    let screenSize = UIScreen.main.bounds
    currentView = UIView()
    nextView = UIView()
    previousView = UIView()

    addPosition(cView: currentView!, nView: nextView!, pView: previousView!)

    currentView?.backgroundColor = .red
    nextView?.backgroundColor = .green
    previousView?.backgroundColor = .blue

    scrollView.addSubview(currentView!)
    scrollView.addSubview(previousView!)
    scrollView.addSubview(nextView!)
    scrollView.contentSize = CGSize(width: screenSize.width * 3, height: screenSize.height)

}

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    if scrollView.contentOffset.x >= (UIScreen.main.bounds.width * 2) {
        addPosition(cView: nextView!, nView: previousView!, pView: currentView!)
    } else if scrollView.contentOffset.x == 0 {
        addPosition(cView: previousView!, nView: currentView!, pView: nextView!)
    }
    scrollView.contentOffset = CGPoint(x: UIScreen.main.bounds.width, y: 0)
}

func addPosition(cView: UIView, nView: UIView, pView: UIView) {
    let screenSize = UIScreen.main.bounds
    cView.frame = CGRect(origin: CGPoint(x: screenSize.width, y: 0), size: screenSize.size)
    nView.frame = CGRect(origin: CGPoint(x: screenSize.width * 2, y: 0), size: screenSize.size)
    pView.frame = CGRect(origin: CGPoint(x: 0, y: 0), size: screenSize.size)

    currentView = cView
    nextView = nView
    previousView = pView
}

}
...