如何在Ionic3應(yīng)用程序中實現(xiàn)自定義頁面過渡

Ionic是編寫自己的應(yīng)用程序的絕佳框架。它基于Cordova和angular,使您能夠快速編寫外觀漂亮的應(yīng)用程序而無需太多精力。

根據(jù)您用來啟動應(yīng)用程序的平臺,Ionic甚至還帶有預(yù)定義的頁面過渡,以便將一個頁面的導(dǎo)航設(shè)置為另一個頁面。iOS上的標(biāo)準(zhǔn)頁面轉(zhuǎn)換是從左側(cè)或右側(cè)滑動。它看起來像這樣:


然而,Ionic頁面轉(zhuǎn)換的文檔非常令人困惑,作為一個初學(xué)者,需要一些時間來了解哪些轉(zhuǎn)換應(yīng)該使用哪些轉(zhuǎn)換。官方文檔包含NativePageTransitions模塊的頁面,但我建議您不要使用它。它不僅長時間沒有收到任何更新,而且為了制作動畫,模塊會截取起始頁和著陸頁的截圖,并為兩個圖像設(shè)置動畫。這似乎是一種奇怪的方式來做到這一點,而未解決問題的公開問題的數(shù)量說明了一切。

您應(yīng)該使用的是Ionic NavController類的集成功能,您已經(jīng)使用它來在頁面之間導(dǎo)航。默認(rèn)情況下啟用此功能(取決于平臺),但也可以使用導(dǎo)航呼叫進行配置:

this.navCtrl.push(MyPageComponent, null, {animate: true, animation: "transition"});?

使用“animate:true”可以打開動畫(這是標(biāo)準(zhǔn)設(shè)置),“animation:transition”設(shè)置用于動畫頁面過渡的動畫。它的字符串和“轉(zhuǎn)換”意味著根據(jù)當(dāng)前平臺使用標(biāo)準(zhǔn)轉(zhuǎn)換。當(dāng)你想在Android平臺上使用iOS轉(zhuǎn)換時,你可以像這樣啟動導(dǎo)航:

this.navCtrl.push(MyPageComponent, null, {animate: true, animation: "transition-ios"});?

沒有其他可以使用的內(nèi)置轉(zhuǎn)換(如向下滑動,向上滑動或向外擴展),我完全沒有找到如何實現(xiàn)自定義轉(zhuǎn)換的官方文檔。但是,有一種準(zhǔn)官方的方式來實現(xiàn)您自己的過渡。

您可以像實現(xiàn)官方轉(zhuǎn)換一樣實現(xiàn)自己的轉(zhuǎn)換類:編寫擴展“ionic-angular / PageTransition”類的自己的轉(zhuǎn)換類,并在離子運行時注冊新的轉(zhuǎn)換。

最基本的轉(zhuǎn)換如下所示:

import{NgModule} from "@angular/core";

import{Config, IonicApp, PageTransition} from "ionic-angular";

import{MyApp} from "./app.component";


@NgModule({

????declarations: [MyApp],

????imports: [...],

????bootstrap: [IonicApp],

????entryComponents: [MyApp,...],

????providers: [...]

})

exportclassAppModule {

????constructor(privateconfig: Config) {

????????this.config.setTransition("emptyTransition", EmptyTransition)

????}

}


exportclassEmptyTransition extendsPageTransition?{

????init() {

????????//here would be the implementation of your own page transition

????}

}

當(dāng)您查看iOS頁面轉(zhuǎn)換官方實現(xiàn)時,您可以看到您可以使用ionic-angular提供的Animation類定義進入和離開頁面的動畫。由于沒有文檔我不得不使用試驗和錯誤如何找出如何使用這個類。

在搞砸了一段時間之后,我遇到了一些我自己的頁面轉(zhuǎn)換:“滑動”和“向下滑動”。

SlideTransition是一個左/右滑動過渡,類似于官方的“transition-ios”,但它動畫整個頁面內(nèi)容而不僅僅是內(nèi)容,而頁眉和頁腳元素保持固定。


然而,SlideDownTransition有點不同。它會向下滑動離開的頁面內(nèi)容,并在執(zhí)行此操作時顯示輸入的頁面內(nèi)容。


SlideTransition經(jīng)過測試,可以在向前和向后轉(zhuǎn)換中工作(想想:Android后退按鈕)。SlideDownTransition可能不起作用,但我沒有測試它,因為我的用例不需要它工作。

令人討厭的是,官方轉(zhuǎn)換是手動控制標(biāo)題組件中標(biāo)準(zhǔn)后退按鈕的可見性。我不明白為什么這是在頁面轉(zhuǎn)換中完成而不是某種后退按鈕組件。因此,我放棄了在我的應(yīng)用程序中使用官方后退按鈕,并在需要時始終使用我自己的按鈕(情況并非總是如此)。因此,上述頁面轉(zhuǎn)換的實現(xiàn)并不關(guān)心后退按鈕的可見性,因此標(biāo)準(zhǔn)后退按鈕始終是不可見的。

使用Ionic Animation類,您可以定義一些開始和結(jié)束樣式,然后在離子頁面的頁面元素上設(shè)置。樣式是我們眾所周知的CSS樣式,不使用BrowserAnimationsModule提供的角度動畫功能。實現(xiàn)轉(zhuǎn)換相對簡單,因為您可以調(diào)整之前在Web應(yīng)用程序中使用的眾所周知的轉(zhuǎn)換的大部分代碼。

但是,我希望Ionic團隊至少有一些關(guān)于此功能的官方文檔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,846評論 4 61
  • 剛剛在抖音刷到這樣一個視頻:題主去朋友家吃飯,朋友的弟弟在用門夾核桃給題主吃。弟弟個子不高,略微有些駝背,看起來行...
    珠江漁民閱讀 159評論 0 0
  • 揮別漸行漸遠的2016年,有笑有淚,有遺憾,有期待?;厥?016年我的關(guān)鍵詞:感恩、惜福、糾結(jié)、停滯。 一、感恩 ...
    逆風(fēng)飛行83閱讀 349評論 0 0
  • 以前夢見失去你,夢醒后心里很害怕,會馬上打電話給你,聽聽你的聲音,聽見你沒什么事情、好好的消息,才能安撫住那害怕的...
  • 寶貝今天的5分鐘 每天哄寶貝睡覺都是重要且艱巨的任務(wù),么么么,所以都要想好久,想著就硬了,然后又忍不住意淫,嘿嘿,...
    握著荊條閱讀 204評論 0 0

友情鏈接更多精彩內(nèi)容