iOS7 自定義動畫跳轉 – iPhone手機開發技術文章 iPhone軟體開發教學課程

簡介

在iOS7系統中,如果你使用短信或者appStore蘋果原生的工具的時候會發現這麼一個細節。UINavigationViewController中界面的Push不再是像iOS6的舊界面左移,新的界面直接右側滑入,而是新的視圖是從右側滑入並且蓋在瞭之前視圖控制器之上,還可以通過手勢在界面左側邊界滑動來跳轉到之前的界面。如圖1.1,1.2。

圖1.1 圖1.2

vcD4KPHA+srvWqrXAxOPKx7fx0tG+rb+0s/bBvbf5zbzWrrzktcTH+LHwoaPT0NK7uPa6w7XEz/vPorjmy9+087zSo6zU2mlPUzfW0KOsy/nT0LrN1eLR+cDgJiMyMDI4NDu1xLmmxNy2vL/J0tTNqLn9yrnTw2lPUzfQwrXEQXBpc8C0yrXP1tfUtqjS5bXEytTNvL/Y1sbG97XEzPjXqqGjPC9wPgo8aDI+0ru49tfUtqjS5bXEzPjXqqO6PC9oMj4KPHA+tbHE47Xju/fEs9K7uPZhcHDW0LXEsLTFpbXEyrG68qOsxLPSu7j2vavSqrPKz9a1xMrTzby/2NbGxve74dTatbHHsMrTzby1xLXXsr+7rMnPwLSho9Xi0ru0ztGnz7CjrM7Sw8e9q86q0OjSqrPKz9a1xMrTzbzKtc/W0ru49tfUtqjS5bXEseS7u6GjPC9wPgo8cD7U2mlPU9bQyrXP1tfUtqjS5cz416rQ6NKq1rTQ0NLUz8LI/bj2sr3W6KO6PC9wPgo8cD4xLrS0vajSu7j2tq+7rb/Y1sbG9zwvcD4KPHA+tdrSu7K9yse0tL2o0ru49sq1z9bBy1VJVmlld0NvbnRyb2xsZXJBbmltYXRlZFRyYW5zaXRpb25pbmfQrdLptcTA4KGj1eK49sDg1tCw/LqstcS0+sLrysfL+dKq1rTQ0LXEtq+7raOsy/nS1NXiuPbA4LG7s8bOqravu62/2NbGxvehozwvcD4KPHA+Mi7U2rPKz9bSu7j20MK1xMrTzby/2NbGxvfHsKOszqrL/Mno1sPM+NeqtcTOr83QoaM8L3A+CjxwPsTj0OjSqs6qxOO9q9Kqs8rP1rXEytPNvL/Y1sbG98ilyejWw9K7uPbL/LXEtq+7rcz416rOr83QoaPNqLn91eK49s6vzdC72LX3wLS78cihs8rP1tDCytPNvL/Y1sbG98qxo6zX1Ly6vavSqta00NC1xLavu62/2NbGxvehozwvcD4KPHA+My7U2rvYtffW0Le1u9i2r7utv9jWxsb3oaM8L3A+CjxwPs2ouf272LX3t723qCgy1tApwLS3tbvYxOO0tL2ousO1xLavu62/2NbGxve1xMq1wP0oMdbQKaGjPC9wPgo8cD7WrrrzwLTKtc/Wy/nT0LK91ujW0LXEtdrSu7K9o7rKtc/W0ru49ravu62/2NbGxvehozwvcD4KPHA+tLS9qNK7uPa2r7utv9jWxsb3PC9wPgo8cCBhbGlnbj0=”left”> 新建一個繼承自NSObject並遵循UIViewControllerAnimatedTransitioning

協議的類。UIViewControllerAnimatedTransitioning協議必須實現兩個用來定義視圖控制器之間自定義動畫的方法。

@interface CustomPresentAnimationController :
NSObject

@end

在.m文件中添加必須實現的兩個方法:

1.控制整個跳轉動畫所需要執行的時間。例子代碼中執行的時間設置為瞭兩秒鐘。

– (NSTimeInterval)transitionDuration:
(id )transitionContext {

return
2.0;

}

2.方法參數transitionContext可以幫助你成功的獲取跳轉前後的視圖控制器、內容視圖和少量的其他來龍去脈。你可以遍歷這些屬性,依賴於包含的視圖控制器,使你的跳轉動畫變得與眾不同。

– (void)animateTransition:
(id )transitionContext {

// 1. obtain state from the context

UIViewController
*toViewController = [transitionContext
viewControllerForKey:UITransitionContextToViewControllerKey];

CGRect
finalFrame = [transitionContext finalFrameForViewController:toViewController];

// 2. obtain the container view

UIView
*containerView = [transitionContext containerView];

// 3. set initial state

CGRect
screenBounds = [[UIScreen
mainScreen]
bounds]; toViewController.view.frame
=

CGRectOffset(finalFrame,
0, screenBounds.size.height);
// 4. add the view

[containerView
addSubview:toViewController.view];

// 5. animate

NSTimeInterval
duration =
[self transitionDuration:transitionContext];

[UIView
animateWithDuration:duration
animations:^{

toViewController.view.frame
= finalFrame; } completion:^(BOOL
finished) {

// 6. inform the context of completion

[transitionContext
completeTransition:YES];

}];

}

點擊關註我,更多精彩內容!!!

群號:336146073

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *