[3.IOS(swift)-ViewController·頁(yè)面跳轉(zhuǎn)]

針對(duì)手寫(xiě)頁(yè)面及storyboard制作頁(yè)面,使用代碼進(jìn)行頁(yè)面跳轉(zhuǎn)的兩種方法。

? 手寫(xiě)頁(yè)面:

var vc = ViewController() 
self.presentViewController(vc, animated: true, completion: nil) 

? storyboard制作頁(yè)面

var sb = UIStoryboard(name: "Main", bundle:nil)  
var vc = sb.instantiateViewControllerWithIdentifier("VC") as ViewController
//VC為該界面storyboardID,Main.storyboard中選中該界面View,Identifier inspector中修改
self.presentViewController(vc, animated: true, completion: nil)
self.performSegueWithIdentifier("VC", sender: nil)

多個(gè)場(chǎng)景之間切換的樣式(Style)總共有5個(gè):

Modal(模態(tài))

-- 過(guò)渡到另一個(gè)場(chǎng)景,以完成一項(xiàng)任務(wù)。任務(wù)完成后,將關(guān)閉該場(chǎng)景,并返回到原來(lái)的場(chǎng)景。

Push(壓入)

-- 創(chuàng)建一個(gè)場(chǎng)景鏈,用戶可在其中前后移動(dòng)。用于導(dǎo)航視圖控制器。

Replace(替換,僅適用于iPad)

-- 替換當(dāng)前場(chǎng)景,用于一些iPad特有的視圖控制器。

Popover(彈出框,僅適用于iPad) --

一個(gè)帶箭頭的彈出框。

Custome(自定義)

-- 通過(guò)編譯在場(chǎng)景之間進(jìn)行自定義過(guò)渡。

過(guò)渡類(lèi)型(Transition)是從一個(gè)場(chǎng)景切換到另一個(gè)場(chǎng)景時(shí)播放的動(dòng)畫(huà)。有4個(gè)選項(xiàng):

Cover Vertical

-- 新場(chǎng)景從下向上移動(dòng),逐漸覆蓋舊場(chǎng)景。

Flip Horizontal

-- 視圖水平翻轉(zhuǎn),以顯示背面的新場(chǎng)景。

Cross Dissolve

-- 舊場(chǎng)景淡出,新場(chǎng)景淡入。

Partial Curl

-- 舊場(chǎng)景像書(shū)頁(yè)一樣翻開(kāi),顯示下面的新場(chǎng)景。

在iPad應(yīng)用程序中,還會(huì)多出一個(gè)Presentation屬性,它決定了模態(tài)視圖在屏幕上的顯示方式。有4種顯示樣式:

Form Sheet(表單)

-- 將場(chǎng)景調(diào)整到比屏幕小(不管朝向),并在當(dāng)前場(chǎng)景后面顯示原始場(chǎng)景,這幾乎相當(dāng)于在一個(gè)iPad窗口中顯示。

Page Sheet(頁(yè)面)

-- 調(diào)整場(chǎng)景大小,使其以縱向格式顯示。Full

Screen(全屏)

-- 調(diào)整場(chǎng)景大小,使其覆蓋整個(gè)屏幕。

Current Context(當(dāng)前上下文)

-- 以原始場(chǎng)景的顯示方式展示場(chǎng)景。

要使用在故事板中定義的切換到另一個(gè)場(chǎng)景,但又不想自動(dòng)觸發(fā)該切換,可使用UIViewController的實(shí)例方法performSegueWithIdentifier:sender。調(diào)用該方法后,切換就將啟動(dòng)并發(fā)生過(guò)渡。應(yīng)將參數(shù)sender設(shè)置為啟動(dòng)切換的對(duì)象。這樣在切換期間,就可確定是哪個(gè)對(duì)象啟動(dòng)了切換。

- (IBAction)toConfigHandler:(id)sender { 
//執(zhí)行名為"toConfig"的切換 
[self performSegueWithIdentifier:@"toConfig" sender:self];}

調(diào)用UIViewController的方法dismissViewControllerAnimated:completion,可以關(guān)閉當(dāng)前模態(tài)視圖,返回到原始場(chǎng)景。completion是一個(gè)可選參數(shù),用于指定過(guò)渡完畢后將執(zhí)行的代碼塊。

- (IBAction)returnToMainHandler:(id)sender { 
//關(guān)閉模態(tài)場(chǎng)景 
[self dismissViewControllerAnimated:YES completion:nil];}

以純代碼的方式創(chuàng)建模態(tài)場(chǎng)景切換:

//獲取"MyMain.storyboard"故事板的引用UIStoryboard *mainStoryboard =[UIStoryboard storyboardWithName:@"MyMain" bundle:nil];

//實(shí)例化Identifier為"myConfig"的視圖控制器
ConfigViewController *configVC = [mainStoryboard instantiateViewControllerWithIdentifier:@"myConfig"];

//為視圖控制器設(shè)置過(guò)渡類(lèi)型
configVC.modalTransitionStyle = UIModalTransitionStyleCoverVertical;

//為視圖控制器設(shè)置顯示樣式
configVC.modalPresentationStyle = UIModalPresentationFullScreen;

//顯示視圖
[self presentViewController:configVC animated:YES completion:nil];

視圖的modalTransitionStyle(過(guò)渡類(lèi)型)屬性有以下枚舉值:

UIModalTransitionStyleCoverVertical

-- 默認(rèn)值,從下向上覆蓋

UIModalTransitionStyleFlipHorizontal

-- 水平翻轉(zhuǎn)

UIModalTransitionStyleCrossDissolve

-- 淡入淡出

UIModalTransitionStylePartialCurl

-- 像書(shū)頁(yè)一樣翻開(kāi)以顯示下面的視圖

視圖的modalPresentationStyle(顯示樣式)屬性有以下枚舉值:

UIModalPresentationFullScreen

-- 默認(rèn)值,如何旋轉(zhuǎn)都是全屏,iPhone下僅有這一個(gè)樣式有效

UIModalPresentationFormSheet

-- 寬度和高度均會(huì)小于屏幕尺寸,居中顯示,四周是變暗區(qū)域。僅適用于

iPadUIModalPresentationPageSheet

-- 在豎屏下和UIModalPresentationFullScreen表現(xiàn)一樣,橫屏下高度和當(dāng)前屏幕高度相同,寬度和豎屏模式下屏幕寬度相同,剩余未覆蓋區(qū)域?qū)?huì)變暗并阻止用戶點(diǎn)擊

UIModalPresentationCurrentContext

-- 與父視圖的顯示樣式相同

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

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

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