WKWebView переход на новую страницу

Я создаю собственную оболочку iOS для веб-сайта, который выглядит и ведет себя как журнал. У него будут длинные прокручиваемые страницы, но пользователь также может пролистывать между главами. Итак, что я хотел бы сделать, так это загрузить новую HTML-страницу, но сделать так, чтобы она переходила слева или справа, как если бы она была вытолкнута / вытолкнута из стека навигации. Кто-нибудь знает, можно ли ввести некоторую базовую анимацию в компонент WKWebView для достижения этого эффекта?


person Lee Probert    schedule 14.01.2016    source источник


Ответы (1)


Один из способов реализовать это - создать анимацию между двумя объектами WKWebView. Вы загружаете свой первый WKWebView, затем, когда вы активируете переход, вы создаете второй WKWebView, помещаете его за пределы экрана и анимируете его вход, в то же время вы перемещаете текущий webView за пределы экрана, а затем удаляете его из своего представления. Что-то вроде:

func presentNextWebView() {
    let webViewToRemove = currentWebView
    let webViewToAdd = WKWebView()
    webViewToAdd.frame = webViewToRemove.frame
    webViewToAdd.center = CGPointMake(2.0*self.view.bounds.width, CGRectGetMidY(self.view.bounds))
    currentWebView = webViewToAdd
    self.view.addSubview(webViewToAdd)
    UIView.animateWithDuration(1.0, animations: {
        webViewToRemove.center = CGPointMake(-2.0*self.view.bounds.width, CGRectGetMidY(self.view.bounds))
        webViewToAdd.center = self.CGPointMake(CGRectGetMidX(self.view.bounds), CGRectGetMidY(self.view.bounds))
        }, completion: { finished in
            webViewToRemove.removeFromSuperview()
    })
}
person jackbravo    schedule 23.09.2016
comment
Проблема заключалась в том, что вся навигация между страницами выполнялась в HTML с использованием JavaScript. Таким образом, помимо вертикальной прокрутки, вы могли проводить пальцем влево и вправо для перехода к предыдущей и следующей страницам. Я хотел как-то изменить способ загрузки WKWebView новой страницы сам по себе. - person Lee Probert; 24.09.2016