視圖切換,沒有NavigationController的情況下,一般會使用presentViewController來切換視圖並攜帶切換時的動畫,
其中切換方法如下:
– presentViewController:animated:completion: 彈出,出現一個新視圖 可以帶動畫效果,完成後可以做相應的執行函數經常為nil
– dismissViewControllerAnimated:completion:退出一個新視圖 可以帶動畫效果,完成後可以做相應的執行函數經常為nil
切換動畫在壓入一個新視圖和彈出頂層視圖均可以使用,下面只以壓入視圖為例。
presentModalViewController:animated:completion:使用系統自帶四種動畫
簡單的實現方式:
[page2Controller setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[self presentModalViewController:myNextViewController animated:YES completion:nil];
系統支持的四種動畫:
typedefenum{
UIModalTransitionStyleCoverVertical=0,//默認方式,豎向上推
UIModalTransitionStyleFlipHorizontal,//水平反轉
UIModalTransitionStyleCrossDissolve,//隱出隱現
UIModalTransitionStylePartialCurl,//部分翻頁效果
} UIModalTransitionStyle;
presentModalViewController:animated:completion:不用自帶的四種動畫效果
實現全翻頁效果:
CATransition *animation = [CATransition animation];
animation.duration =1.0;
animation.timingFunction = UIViewAnimationCurveEaseInOut;
animation.type =@"pageCurl";
//animation.type = kCATransitionPush;
animation.subtype = kCATransitionFromLeft;
[self.view.window.layer addAnimation:animation forKey:nil];
[self presentModalViewController:myNextViewController animated:NO completion:nil];
常見的轉換類型(type):
kCATransitionFade //淡出
kCATransitionMoveIn //覆蓋原圖
kCATransitionPush //推出
kCATransitionReveal //底部顯出來
SubType:
kCATransitionFromRight
kCATransitionFromLeft // 默認值
kCATransitionFromTop
kCATransitionFromBottom
設置其他動畫類型的方法(type):
pageCurl 向上翻一頁
pageUnCurl 向下翻一頁
rippleEffect 滴水效果
suckEffect 收縮效果,如一塊布被抽走
cube 立方體效果
oglFlip 上下翻轉效果