?PS: 寫完這篇文章發(fā)現(xiàn)了系統(tǒng)封裝好的方法,感興趣可以移步 下一篇文章 效果是不一樣的,大家可以比較一下喲
網(wǎng)上找了,好多翻頁的效果,但是都不適合,因?yàn)檎娣疵娑际?要顯示的view, 我們需要的效果是 從正面 翻頁 到反面,顯示反面的內(nèi)容
?這時(shí)候 就想自己做了
?view.layer 有一個(gè) transform 的屬性,利用這個(gè)我們可以達(dá)到讓我們的view 以center.y 的 y 軸 為中心 翻轉(zhuǎn)
?利用這個(gè)特性,我想到了,可以 把將要消失的正面 View 翻轉(zhuǎn)90度,然后讓 要顯示的view 從 90度 開始 翻轉(zhuǎn) 到 0 度,這樣我們看到的就是 正反面 翻轉(zhuǎn) 交替顯示,欺騙的是你的眼睛喲,下面上代碼
+ (void)transitformShowView:(UIView *)view hiddenView:(UIView *)toView
{
view.layer.transform = CATransform3DMakeRotation( M_PI/ 2 , 0, 1, 0);
toView.layer.transform = CATransform3DMakeRotation( M_PI/ 2 , 0, 0, 0);
[view.superview bringSubviewToFront:view];
[UIView animateWithDuration:0.6 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
toView.layer.transform = CATransform3DMakeRotation( M_PI/ 2 , 0, 1, 0);
} completion:^(BOOL finished) {
[view.superview bringSubviewToFront:view];
[UIView animateWithDuration:0.6 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{
view.layer.transform = CATransform3DMakeRotation( 0 , 0, 1, 0);
}completion:nil];
}];
}
?下面是gif 效果

-----2.gif
?另外附上 添加了 不做作的彈性動(dòng)畫的效果,為什么不做作?自己試下唄
+ (void)transitformShowView:(UIView *)view hiddenView:(UIView *)toView
{
view.layer.transform = CATransform3DMakeRotation( M_PI/ 2 , 0, 1, 0);
toView.layer.transform = CATransform3DMakeRotation( M_PI/ 2 , 0, 0, 0);
[view.superview bringSubviewToFront:view];
[UIView animateWithDuration:0.4 delay:0 usingSpringWithDamping:1 initialSpringVelocity:6 options:UIViewAnimationOptionCurveEaseInOut animations:^{
toView.layer.transform = CATransform3DMakeRotation( M_PI/ 2 , 0, 1, 0);
} completion:^(BOOL finished) {
[view.superview bringSubviewToFront:view];
[UIView animateWithDuration:0.4 delay:0 usingSpringWithDamping:0.8 initialSpringVelocity:0.1 options:UIViewAnimationOptionCurveEaseInOut animations:^{
view.layer.transform = CATransform3DMakeRotation( 0 , 0, 1, 0);
}completion:nil];
}];
}
?下面效果圖,但沒有用手機(jī)來的爽

-----4.gif
最后提一句,兩個(gè) View 是需要 重疊在一起的,不然 效果 不對(duì)喲