大致思路使用兩層輔助UIView的旋轉來實現添加后的View的橫向翻頁效果
CATransform3D transformA = CATransform3DRotate(CATransform3DIdentity, degreesToRadian(90), 0, 0, 1.0f); CATransform3D transformB = CATransform3DRotate(CATransform3DIdentity, degreesToRadian(180), 0.0f, 1.0f, 0.0f); bgview.layer.transform = CATransform3DConcat(transformA, transformB); CATransform3D transform3DA = CATransform3DRotate(CATransform3DIdentity, degreesToRadian(90), 0, 0, 1.0f); CATransform3D transform3DB = CATransform3DRotate(CATransform3DIdentity, degreesToRadian(180), 0.0f, 1.0f, 0.0f); superView.layer.transform = CATransform3DConcat(transform3DA, transform3DB);
View的層次:superView──bgView──自己的View
向bgView中添加自己的View(注:要在bgView的subViews多于一個時才有翻頁效果)
[UIView beginAnimations:@"view transition" context:nil]; [UIView setAnimationDuration:1.0]; [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:bgView cache:NO];
[bgView addSubview:viewController.view];
這樣做一是實現了橫向翻頁,二是保證你自己的View添加之后的方向是正確的,試試就知道為什么非要弄兩層來輔助了,至于旋轉后的Frame變化問題就看自己的使用情況調整了,尤其注意頂層View(添加進去的View)的Touch事件可能無法識別到,是因為底層View(bg和super View)旋轉后的Frame出了問題!!!
不知道有沒有其他的好方法,如果各位有更好的方法還望賜教!
新聞熱點
疑難解答