Comment passer d'un chapitre à un autre?

Nov 28 2020

J'ai une webview. Chaque fois que l'utilisateur clique sur le bouton suivant, je charge la vue Web avec un nouveau contenu:

 webView.loadHTMLString(bodyText, baseURL: nil)

Comment créer la transition suivante pour qu'il semble qu'une nouvelle page arrive de la droite chaque fois qu'un utilisateur clique sur le suivant?

Voir le lien par exemple

https://imgur.com/bCgk5qs

Voici ce que j'ai jusqu'à présent

let webViewToRemove = webView
let webViewToAdd = WKWebView()
webViewToAdd.frame = webViewToRemove?.frame as! CGRect
if (swipeLeft) {
    webViewToAdd.center = CGPoint(x: 2.0*self.view.bounds.width, y: webView.bounds.midY)
} else {
    webViewToAdd.center = CGPoint(x: -2.0*self.view.bounds.width, y: webView.bounds.midY)
}
webView = webViewToAdd
webView.loadHTMLString(bodyText, baseURL: nil)
self.view.addSubview(webViewToAdd)
UIView.animate(withDuration: 1.0, animations: {
    if (swipeLeft) {
        webViewToRemove?.center = CGPoint(x: -2.0*self.view.bounds.width, y: self.webView.bounds.midY)
    } else {
        webViewToRemove?.center = CGPoint(x: 2.0*self.view.bounds.width, y: self.webView.bounds.midY)
    }
    webViewToAdd.center = CGPoint(x: self.view.bounds.midX, y: self.webView.bounds.midY)
    }, completion: { finished in
        webViewToRemove?.removeFromSuperview()
})

Réponses

matt Nov 28 2020 at 17:56

J'ai une application sur l'App Store qui se comporte comme vous semblez le décrire. Il affiche son aide sous forme de vues Web chargées à partir de chaînes html, tout comme ce que vous faites. L'utilisateur peut naviguer à droite et à gauche soit avec les boutons fléchés (en haut à gauche), soit en glissant manuellement avec un doigt. Ce screencast montre les deux; J'utilise d'abord les boutons fléchés, puis je glisse manuellement:

Comment cela se fait-il? C'est trivial; c'est un UIPageViewController. Inutile de réinventer une roue qu'Apple nous a déjà remise.