iOS開發中界面的跳轉一般都會使用導航欄UINavigationController來進行push跳轉,使用導航欄跳轉用起來簡單,并且自帶返回按鈕,非常方便。但也會用到模態視圖的跳轉,我對模態視圖使用的心得就是在跳轉到不需要真個界面展示視圖的時候使用模態視圖跳轉看起來的視覺效果會好一些,并且可以對跳轉動畫進行簡單的自定制,使用戶體驗更加的流暢完美。
相信大部分的iOS開發者都知道模態視圖如何使用,但是還有一些初學者并不知道如何使用,其實非常簡單,核心代碼如下:
ModalViewController * modal = [[ModalViewController alloc] init];
//把當前控制器作為背景
self.definesPresentationContext = YES;
//設置模態視圖彈出樣式
modal.modalPresentationStyle = UIModalPresentationOverFullScreen;
[self presentViewController:modal animated:YES completion:nil];
上面的幾行代碼已經可以實現模態視圖的跳轉了。但是如果僅僅是這么跳轉,效果看起來并不是很好看,下面我們可以在當前視圖控制器window的layer添加一個簡單的自定制的動畫,會讓跳轉效果看起來更加流暢。
//創建動畫
CATransition * transition = [CATransition animation];
//設置動畫類型(這個是字符串,可以搜索一些更好看的類型)
transition.type = @"moveOut";
//動畫出現類型
transition.subtype = @"fromCenter";
//動畫時間
transition.duration = 0.3;
//移除當前window的layer層的動畫
[self.view.window.layer removeAllAnimations];
//將定制好的動畫添加到當前控制器window的layer層
[self.view.window.layer addAnimation:transition forKey:nil];
把上邊代碼寫在模態視圖跳轉之前(為了養成良好的代碼管理習慣,建議將該段代碼封裝到一個方法中,使用的時候調用該方法即可),present的時候需要關閉系統動畫即:
[self presentViewController:modal animated:NO completion:nil];
到了這里,我們就可以實現一個簡單又好看的模態視圖跳轉,非常簡單吧!當然跳轉到的界面需要使用dismiss來返回。
下面來給大家簡單再簡單說一下模態視圖彈出樣式:
//跳轉之后覆蓋整個屏幕,不透明
UIModalPresentationFullScreen = 0,
//跳轉之后覆蓋整個屏幕,不透明
UIModalPresentationPageSheet
//跳轉之后覆蓋整個屏幕,不透明
UIModalPresentationFormSheet
//跳轉之后覆蓋當前內容(除導航欄和標簽欄部分),不透明
UIModalPresentationCurrentContext
//跳轉之后顯示自定制視圖(默認是覆蓋整個屏幕),可以透明
UIModalPresentationCustom
//跳轉之后覆蓋整個屏幕,可以透明
UIModalPresentationOverFullScreen
//跳轉之后覆蓋當前內容(除導航欄和標簽欄部分),可以透明
UIModalPresentationOverCurrentContext
//跳轉之后覆蓋整個屏幕,不透明
UIModalPresentationPopover
我對模態視圖跳轉的看法是為了用戶體驗更加完美而增加的,由此通常用到的跳轉彈出樣式一般會選擇可以透明的,看起來更加漂亮。可以根據需求而選擇是覆蓋整個屏幕,還是只覆蓋當前內容(未覆蓋部分是可以交互的)。
最后還是希望能夠幫助到有需要的程序猿們,同時希望大家能夠多多提意見,愿同是程序猿的我們在開發的道路上共同成長。謝謝!!!