iOS7 自訂動畫跳轉

來源:互聯網
上載者:User

簡介

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


圖1.1 圖1.2

<喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">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 {

return2.0;

}

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

- (void)animateTransition:
(id )transitionContext {

// 1. obtain state from the context

UIViewController*toViewController = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];

CGRectfinalFrame = [transitionContext finalFrameForViewController:toViewController];

// 2. obtain the container view

UIView*containerView = [transitionContext containerView];

// 3. set initial state

CGRectscreenBounds = [[UIScreenmainScreen]bounds]; toViewController.view.frame=

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

[containerViewaddSubview:toViewController.view];

// 5. animate

NSTimeIntervalduration =
[self transitionDuration:transitionContext];

[UIViewanimateWithDuration:duration animations:^{

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

// 6. inform the context of completion

[transitionContext completeTransition:YES];

}];

}

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

群號:336146073

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.