針對(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
-- 與父視圖的顯示樣式相同